From 8834c08037d87b7d76b3e98f8dc8b34b6584b686 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 08:31:31 -0400 Subject: [PATCH 01/16] Tabify --- .../Editors/FileSystemEditor.cs | 152 +++++++++--------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/CSharp/Engines/WindowsForms/Libraries/UniversalEditor.UserInterface.WindowsForms/Editors/FileSystemEditor.cs b/CSharp/Engines/WindowsForms/Libraries/UniversalEditor.UserInterface.WindowsForms/Editors/FileSystemEditor.cs index 94f29916..41593c63 100644 --- a/CSharp/Engines/WindowsForms/Libraries/UniversalEditor.UserInterface.WindowsForms/Editors/FileSystemEditor.cs +++ b/CSharp/Engines/WindowsForms/Libraries/UniversalEditor.UserInterface.WindowsForms/Editors/FileSystemEditor.cs @@ -260,7 +260,7 @@ namespace UniversalEditor.UserInterface.WindowsForms.Editors AwesomeControls.ListView.ListViewItem lvi = new AwesomeControls.ListView.ListViewItem(); lvi.Text = folder.Name; lvi.ImageKey = "generic-folder-closed"; - lvi.Data = folder; + lvi.Data = folder; foreach (Folder folder1 in folder.Folders) { RecursiveLoadListViewFolder(folder1, lvi); @@ -282,12 +282,12 @@ namespace UniversalEditor.UserInterface.WindowsForms.Editors private void tv_AfterSelect(object sender, TreeViewEventArgs e) { - mvarCurrentFolder = (tv.SelectedNode.Tag as Folder); + mvarCurrentFolder = (tv.SelectedNode.Tag as Folder); UpdateListView(); lv.Refresh(); } - private Folder mvarCurrentFolder = null; + private Folder mvarCurrentFolder = null; private void UpdateListView() { @@ -303,9 +303,9 @@ namespace UniversalEditor.UserInterface.WindowsForms.Editors } tIconLoader = new System.Threading.Thread(tIconLoader_ThreadStart); - if (mvarCurrentFolder != null) + if (mvarCurrentFolder != null) { - Folder folder = mvarCurrentFolder; + Folder folder = mvarCurrentFolder; foreach (Folder folder1 in folder.Folders) { RecursiveLoadListViewFolder(folder1, null); @@ -328,38 +328,38 @@ namespace UniversalEditor.UserInterface.WindowsForms.Editors } lv.EndUpdate(); - RecursiveUpdateTreeView(); + RecursiveUpdateTreeView(); - if (tIconLoader != null) - { - tIconLoader.Abort(); - tIconLoader = new System.Threading.Thread(tIconLoader_ThreadStart); - } + if (tIconLoader != null) + { + tIconLoader.Abort(); + tIconLoader = new System.Threading.Thread(tIconLoader_ThreadStart); + } tIconLoader.Start(); } - private void RecursiveUpdateTreeView(TreeNode parent = null) - { - if (parent == null) - { - foreach (TreeNode tn in tv.Nodes) - { - RecursiveUpdateTreeView(tn); - } - } - else - { - if ((parent.Tag == null && mvarCurrentFolder == null) || (parent.Tag == mvarCurrentFolder)) - { - tv.SelectedNode = parent; - } + private void RecursiveUpdateTreeView(TreeNode parent = null) + { + if (parent == null) + { + foreach (TreeNode tn in tv.Nodes) + { + RecursiveUpdateTreeView(tn); + } + } + else + { + if ((parent.Tag == null && mvarCurrentFolder == null) || (parent.Tag == mvarCurrentFolder)) + { + tv.SelectedNode = parent; + } - foreach (TreeNode tn in parent.Nodes) - { - RecursiveUpdateTreeView(tn); - } - } - } + foreach (TreeNode tn in parent.Nodes) + { + RecursiveUpdateTreeView(tn); + } + } + } private void lv_MouseMove(object sender, MouseEventArgs e) { @@ -619,14 +619,14 @@ namespace UniversalEditor.UserInterface.WindowsForms.Editors lvi.Data = file; lv.Items.Add(lvi); - if (tIconLoader != null) - { - if (tIconLoader.ThreadState != System.Threading.ThreadState.Unstarted) - { - tIconLoader = new System.Threading.Thread(tIconLoader_ThreadStart); - } - tIconLoader.Start(); - } + if (tIconLoader != null) + { + if (tIconLoader.ThreadState != System.Threading.ThreadState.Unstarted) + { + tIconLoader = new System.Threading.Thread(tIconLoader_ThreadStart); + } + tIconLoader.Start(); + } lv.Refresh(); } @@ -796,42 +796,42 @@ namespace UniversalEditor.UserInterface.WindowsForms.Editors UpdateListView(); } - private void lv_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Back) - { - if (mvarCurrentFolder != null) - { - if (mvarCurrentFolder.Parent != null) - { - mvarCurrentFolder = mvarCurrentFolder.Parent; - } - else - { - mvarCurrentFolder = null; - } - } - else - { - System.Media.SystemSounds.Beep.Play(); - } - UpdateListView(); - } - } + private void lv_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Back) + { + if (mvarCurrentFolder != null) + { + if (mvarCurrentFolder.Parent != null) + { + mvarCurrentFolder = mvarCurrentFolder.Parent; + } + else + { + mvarCurrentFolder = null; + } + } + else + { + System.Media.SystemSounds.Beep.Play(); + } + UpdateListView(); + } + } - private void lv_ItemActivate(object sender, EventArgs e) - { - if (lv.SelectedItems.Count == 1) - { - if (lv.SelectedItems[0].Items.Count > 0) - { - if (lv.SelectedItems[0].Data is Folder) - { - mvarCurrentFolder = (lv.SelectedItems[0].Data as Folder); - UpdateListView(); - } - } - } - } + private void lv_ItemActivate(object sender, EventArgs e) + { + if (lv.SelectedItems.Count == 1) + { + if (lv.SelectedItems[0].Items.Count > 0) + { + if (lv.SelectedItems[0].Data is Folder) + { + mvarCurrentFolder = (lv.SelectedItems[0].Data as Folder); + UpdateListView(); + } + } + } + } } } From f7e935dbdab2ba51e7e328587ad3d963d4417118 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 08:45:36 -0400 Subject: [PATCH 02/16] Tabify --- .../UniversalEditor.UserInterface/Command.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs index e94a37c9..9a9a8eb4 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs @@ -21,13 +21,13 @@ namespace UniversalEditor.UserInterface } private bool mvarEnableTearoff = false; - public bool EnableTearoff { get { return mvarEnableTearoff; } set { mvarEnableTearoff = value; } } + public bool EnableTearoff { get { return mvarEnableTearoff; } set { mvarEnableTearoff = value; } } - private bool mvarChecked = false; - /// - /// Determines whether this command displays as checked. - /// - public bool Checked { get { return mvarChecked; } set { mvarChecked = value; } } + private bool mvarChecked = false; + /// + /// Determines whether this command displays as checked. + /// + public bool Checked { get { return mvarChecked; } set { mvarChecked = value; } } private string mvarID = String.Empty; /// @@ -78,6 +78,6 @@ namespace UniversalEditor.UserInterface { if (Executed != null) Executed(this, EventArgs.Empty); } - } + } } From 6ed850767f95dc745fb2e3aa6b1767954622da9e Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 08:49:11 -0400 Subject: [PATCH 03/16] Tabify --- .../CompressionMethod.cs | 4 +- .../CompressionModules.cs | 16 +- .../RLEW/RLEWCompressionModule.cs | 250 ++-- .../UniversalEditor.Core/Accessor.cs | 108 +- .../Accessors/MemoryAccessor.cs | 10 +- .../Accessors/StringAccessor.cs | 4 +- .../Modules/Adler32/Adler32ChecksumModule.cs | 8 +- .../Modules/CRC32/CRC32ChecksumModule.cs | 192 +-- .../StrangeCRC/StrangeCRCChecksumModule.cs | 4 +- .../UniversalEditor.Core/Document.cs | 102 +- .../UniversalEditor.Core/ExtensionMethods.cs | 4 +- .../UniversalEditor.Core/IO/Encoding.cs | 100 +- .../UniversalEditor.Core/IO/Writer.cs | 1028 ++++++++--------- .../Localization/StringTable.cs | 28 +- .../Common/Reflection.cs | 8 +- .../UniversalEditor.UserInterface/Engine.cs | 20 +- .../IHostApplicationWindow.cs | 2 +- .../UniversalEditor.UserInterface/MenuBar.cs | 310 ++--- .../UniversalEditor.UserInterface/Toolbar.cs | 44 +- .../UniversalEditor.UserInterface/Toolbox.cs | 54 +- 20 files changed, 1148 insertions(+), 1148 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.Compression/CompressionMethod.cs b/CSharp/Libraries/UniversalEditor.Compression/CompressionMethod.cs index 96fb17b2..f884dd05 100644 --- a/CSharp/Libraries/UniversalEditor.Compression/CompressionMethod.cs +++ b/CSharp/Libraries/UniversalEditor.Compression/CompressionMethod.cs @@ -15,8 +15,8 @@ namespace UniversalEditor.Compression Gzip, LZMA, LZMASolid, - LZSS, - LZH, + LZSS, + LZH, LZW, LZX, PPPMd, diff --git a/CSharp/Libraries/UniversalEditor.Compression/CompressionModules.cs b/CSharp/Libraries/UniversalEditor.Compression/CompressionModules.cs index 604c09e0..eac0aa1d 100644 --- a/CSharp/Libraries/UniversalEditor.Compression/CompressionModules.cs +++ b/CSharp/Libraries/UniversalEditor.Compression/CompressionModules.cs @@ -6,18 +6,18 @@ using System.Text; namespace UniversalEditor.Compression { public static class CompressionModules - { + { - private static Modules.Bzip2.Bzip2CompressionModule mvarBzip2 = new Modules.Bzip2.Bzip2CompressionModule(); - public static Modules.Bzip2.Bzip2CompressionModule Bzip2 { get { return mvarBzip2; } } + private static Modules.Bzip2.Bzip2CompressionModule mvarBzip2 = new Modules.Bzip2.Bzip2CompressionModule(); + public static Modules.Bzip2.Bzip2CompressionModule Bzip2 { get { return mvarBzip2; } } - private static Modules.Deflate.DeflateCompressionModule mvarDeflate = new Modules.Deflate.DeflateCompressionModule(); - public static Modules.Deflate.DeflateCompressionModule Deflate { get { return mvarDeflate; } } + private static Modules.Deflate.DeflateCompressionModule mvarDeflate = new Modules.Deflate.DeflateCompressionModule(); + public static Modules.Deflate.DeflateCompressionModule Deflate { get { return mvarDeflate; } } private static Modules.Gzip.GzipCompressionModule mvarGzip = new Modules.Gzip.GzipCompressionModule(); - public static Modules.Gzip.GzipCompressionModule Gzip { get { return mvarGzip; } } + public static Modules.Gzip.GzipCompressionModule Gzip { get { return mvarGzip; } } - private static Modules.Zlib.ZlibCompressionModule mvarZlib = new Modules.Zlib.ZlibCompressionModule(); - public static Modules.Zlib.ZlibCompressionModule Zlib { get { return mvarZlib; } } + private static Modules.Zlib.ZlibCompressionModule mvarZlib = new Modules.Zlib.ZlibCompressionModule(); + public static Modules.Zlib.ZlibCompressionModule Zlib { get { return mvarZlib; } } } } diff --git a/CSharp/Libraries/UniversalEditor.Compression/RLEW/RLEWCompressionModule.cs b/CSharp/Libraries/UniversalEditor.Compression/RLEW/RLEWCompressionModule.cs index 3f6d8a0d..693409c1 100644 --- a/CSharp/Libraries/UniversalEditor.Compression/RLEW/RLEWCompressionModule.cs +++ b/CSharp/Libraries/UniversalEditor.Compression/RLEW/RLEWCompressionModule.cs @@ -6,147 +6,147 @@ using UniversalEditor.Accessors; namespace UniversalEditor.Compression.RLEW { - public class RLEWCompressionModule : CompressionModule - { - public override string Name - { - get { return "RLEW"; } - } + public class RLEWCompressionModule : CompressionModule + { + public override string Name + { + get { return "RLEW"; } + } - private short mvarRLEWTag = 0; - public short RLEWTag { get { return mvarRLEWTag; } set { mvarRLEWTag = value; } } + private short mvarRLEWTag = 0; + public short RLEWTag { get { return mvarRLEWTag; } set { mvarRLEWTag = value; } } protected override void CompressInternal(System.IO.Stream inputStream, System.IO.Stream outputStream) - { - IO.Reader br = new IO.Reader(new StreamAccessor(inputStream)); - IO.Writer bw = new IO.Writer(new StreamAccessor(outputStream)); - - short lastWord = 0; - short wordCount = 0; - bool hasLastWord = false; + { + IO.Reader br = new IO.Reader(new StreamAccessor(inputStream)); + IO.Writer bw = new IO.Writer(new StreamAccessor(outputStream)); + + short lastWord = 0; + short wordCount = 0; + bool hasLastWord = false; - while (!br.EndOfStream) - { - // to make this work efficiently, we need to have at least four equal words - // (RLEWtag + count + value = 3 words) + while (!br.EndOfStream) + { + // to make this work efficiently, we need to have at least four equal words + // (RLEWtag + count + value = 3 words) - // read the next value in - short word = 0; - if (br.Remaining == 0) - { - break; - } - else if (br.Remaining == 1) - { - word = br.ReadByte(); - } - else if (br.Remaining >= 2) - { - word = br.ReadInt16(); - } + // read the next value in + short word = 0; + if (br.Remaining == 0) + { + break; + } + else if (br.Remaining == 1) + { + word = br.ReadByte(); + } + else if (br.Remaining >= 2) + { + word = br.ReadInt16(); + } - if (!hasLastWord) - { - lastWord = word; - hasLastWord = true; - wordCount++; - continue; - } + if (!hasLastWord) + { + lastWord = word; + hasLastWord = true; + wordCount++; + continue; + } - if (word == lastWord) - { - // it's equal to the last word, so increment our word count - wordCount++; + if (word == lastWord) + { + // it's equal to the last word, so increment our word count + wordCount++; - if (wordCount == 4) - { - // we have at least four equal words, so push out an RLEWtag... - bw.WriteInt16(mvarRLEWTag); - } - } - else - { - // word is not equal, flush the remaining words... - if (wordCount <= 3) - { - // we do not have at least four equal words, it would be more efficient to - // just store the values as-is, so flush the remaining words - for (ushort i = 0; i < wordCount; i++) - { - bw.WriteInt16(word); - } + if (wordCount == 4) + { + // we have at least four equal words, so push out an RLEWtag... + bw.WriteInt16(mvarRLEWTag); + } + } + else + { + // word is not equal, flush the remaining words... + if (wordCount <= 3) + { + // we do not have at least four equal words, it would be more efficient to + // just store the values as-is, so flush the remaining words + for (ushort i = 0; i < wordCount; i++) + { + bw.WriteInt16(word); + } - bw.WriteInt16(lastWord); + bw.WriteInt16(lastWord); - lastWord = 0; - wordCount = 0; - } - else - { - bw.WriteInt16(wordCount); - bw.WriteInt16(lastWord); - } + lastWord = 0; + wordCount = 0; + } + else + { + bw.WriteInt16(wordCount); + bw.WriteInt16(lastWord); + } - // ... and clear the word count - lastWord = 0; - wordCount = 0; + // ... and clear the word count + lastWord = 0; + wordCount = 0; - // finally, set the last word to the current word - lastWord = word; - } - } + // finally, set the last word to the current word + lastWord = word; + } + } - // word is not equal, flush the remaining words... - if (wordCount <= 3) - { - // we do not have at least four equal words, it would be more efficient to - // just store the values as-is, so flush the remaining words - for (ushort i = 0; i < wordCount; i++) - { - bw.WriteInt16(lastWord); - } + // word is not equal, flush the remaining words... + if (wordCount <= 3) + { + // we do not have at least four equal words, it would be more efficient to + // just store the values as-is, so flush the remaining words + for (ushort i = 0; i < wordCount; i++) + { + bw.WriteInt16(lastWord); + } - lastWord = 0; - wordCount = 0; - } - else - { - bw.WriteInt16(wordCount); - bw.WriteInt16(lastWord); - } + lastWord = 0; + wordCount = 0; + } + else + { + bw.WriteInt16(wordCount); + bw.WriteInt16(lastWord); + } - bw.Flush(); - } + bw.Flush(); + } protected override void DecompressInternal(System.IO.Stream inputStream, System.IO.Stream outputStream, int inputLength, int outputLength) - { - IO.Reader br = new IO.Reader(new StreamAccessor(inputStream)); - IO.Writer bw = new IO.Writer(new StreamAccessor(outputStream)); - - while (!br.EndOfStream) - { - // read one word from compressed block - short word = br.ReadInt16(); - if (word == mvarRLEWTag) - { - // next two words are a compressed run of data, first word is number - // of words to write - short count = br.ReadInt16(); - short value = br.ReadInt16(); - for (short i = 0; i < count; i++) - { - bw.WriteInt16(value); - } - } - else - { - // if word is not equal to RLEWtag, then simply write that word out - bw.WriteInt16(word); - } - } + { + IO.Reader br = new IO.Reader(new StreamAccessor(inputStream)); + IO.Writer bw = new IO.Writer(new StreamAccessor(outputStream)); + + while (!br.EndOfStream) + { + // read one word from compressed block + short word = br.ReadInt16(); + if (word == mvarRLEWTag) + { + // next two words are a compressed run of data, first word is number + // of words to write + short count = br.ReadInt16(); + short value = br.ReadInt16(); + for (short i = 0; i < count; i++) + { + bw.WriteInt16(value); + } + } + else + { + // if word is not equal to RLEWtag, then simply write that word out + bw.WriteInt16(word); + } + } - bw.Flush(); - bw.Close(); - } - } + bw.Flush(); + bw.Close(); + } + } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessor.cs index bb0c75ca..08999a33 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessor.cs @@ -7,74 +7,74 @@ using System.Diagnostics; namespace UniversalEditor { - [DebuggerNonUserCode()] - public abstract class Accessor - { - public Accessor() - { - mvarReader = new Reader(this); - mvarWriter = new Writer(this); - } + [DebuggerNonUserCode()] + public abstract class Accessor + { + public Accessor() + { + mvarReader = new Reader(this); + mvarWriter = new Writer(this); + } - public abstract long Length { get; set; } + public abstract long Length { get; set; } protected abstract long GetPosition(); - public virtual long Position { get { return GetPosition(); } set { Seek(value, SeekOrigin.Begin); } } + public virtual long Position { get { return GetPosition(); } set { Seek(value, SeekOrigin.Begin); } } - public long Remaining - { - get - { - long r = Length - Position; - if (r <= 0) return 0; - return r; - } - } + public long Remaining + { + get + { + long r = Length - Position; + if (r <= 0) return 0; + return r; + } + } - public void Seek(int length, SeekOrigin position) - { - Seek((long)length, position); - } - public abstract void Seek(long length, SeekOrigin position); + public void Seek(int length, SeekOrigin position) + { + Seek((long)length, position); + } + public abstract void Seek(long length, SeekOrigin position); - internal abstract int ReadInternal(byte[] buffer, int start, int count); - internal abstract int WriteInternal(byte[] buffer, int start, int count); + internal abstract int ReadInternal(byte[] buffer, int start, int count); + internal abstract int WriteInternal(byte[] buffer, int start, int count); - internal virtual void FlushInternal() - { - } + internal virtual void FlushInternal() + { + } - private bool mvarIsOpen = false; - public bool IsOpen { get { return mvarIsOpen; } protected set { mvarIsOpen = value; } } + private bool mvarIsOpen = false; + public bool IsOpen { get { return mvarIsOpen; } protected set { mvarIsOpen = value; } } - public void Open() - { - if (mvarIsOpen) return; + public void Open() + { + if (mvarIsOpen) return; - OpenInternal(); - mvarIsOpen = true; - } - public void Close() - { - if (!mvarIsOpen) return; + OpenInternal(); + mvarIsOpen = true; + } + public void Close() + { + if (!mvarIsOpen) return; - CloseInternal(); - mvarIsOpen = false; - } + CloseInternal(); + mvarIsOpen = false; + } - protected abstract void OpenInternal(); - protected abstract void CloseInternal(); + protected abstract void OpenInternal(); + protected abstract void CloseInternal(); - private Encoding mvarDefaultEncoding = Encoding.Default; - /// - /// The default to use when reading and writing strings. - /// - public Encoding DefaultEncoding { get { return mvarDefaultEncoding; } set { mvarDefaultEncoding = value; } } + private Encoding mvarDefaultEncoding = Encoding.Default; + /// + /// The default to use when reading and writing strings. + /// + public Encoding DefaultEncoding { get { return mvarDefaultEncoding; } set { mvarDefaultEncoding = value; } } - private Reader mvarReader = null; - public Reader Reader { get { return mvarReader; } } - private Writer mvarWriter = null; - public Writer Writer { get { return mvarWriter; } } + private Reader mvarReader = null; + public Reader Reader { get { return mvarReader; } } + private Writer mvarWriter = null; + public Writer Writer { get { return mvarWriter; } } public virtual string Title { diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs index a29c507e..c02cbf60 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs @@ -40,7 +40,7 @@ namespace UniversalEditor.Accessors _data = data; } - // [DebuggerNonUserCode()] + // [DebuggerNonUserCode()] public override void Seek(long length, SeekOrigin position) { long start = 0; @@ -81,8 +81,8 @@ namespace UniversalEditor.Accessors internal override int ReadInternal(byte[] buffer, int start, int count) { - System.Array.Copy(_data, Position, buffer, start, count); - Position += count; + System.Array.Copy(_data, Position, buffer, start, count); + Position += count; return count; } internal override int WriteInternal(byte[] buffer, int start, int count) @@ -92,10 +92,10 @@ namespace UniversalEditor.Accessors return count; } - protected override void OpenInternal() + protected override void OpenInternal() { } - protected override void CloseInternal() + protected override void CloseInternal() { } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs index afde7ddc..5242e4bf 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs @@ -102,10 +102,10 @@ namespace UniversalEditor.Accessors return count; } - protected override void OpenInternal() + protected override void OpenInternal() { } - protected override void CloseInternal() + protected override void CloseInternal() { } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/Adler32/Adler32ChecksumModule.cs b/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/Adler32/Adler32ChecksumModule.cs index 67916cbc..e7e9fbb0 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/Adler32/Adler32ChecksumModule.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/Adler32/Adler32ChecksumModule.cs @@ -76,10 +76,10 @@ namespace UniversalEditor.Checksum.Modules.Adler32 /// public sealed class Adler32 : ChecksumModule { - public override string Name - { - get { return "Adler32"; } - } + public override string Name + { + get { return "Adler32"; } + } /// /// largest prime smaller than 65536 diff --git a/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/CRC32/CRC32ChecksumModule.cs b/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/CRC32/CRC32ChecksumModule.cs index 92eb133b..7fceba7b 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/CRC32/CRC32ChecksumModule.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/CRC32/CRC32ChecksumModule.cs @@ -40,40 +40,40 @@ using System; namespace UniversalEditor.Checksum.Modules.CRC32 { - /// - /// Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: - /// x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. - /// - /// Polynomials over GF(2) are represented in binary, one bit per coefficient, - /// with the lowest powers in the most significant bit. Then adding polynomials - /// is just exclusive-or, and multiplying a polynomial by x is a right shift by - /// one. If we call the above polynomial p, and represent a byte as the - /// polynomial q, also with the lowest power in the most significant bit (so the - /// byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - /// where a mod b means the remainder after dividing a by b. - /// - /// This calculation is done using the shift-register method of multiplying and - /// taking the remainder. The register is initialized to zero, and for each - /// incoming bit, x^32 is added mod p to the register if the bit is a one (where - /// x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - /// x (which is shifting right by one and adding x^32 mod p if the bit shifted - /// out is a one). We start with the highest power (least significant bit) of - /// q and repeat for all eight bits of q. - /// - /// The table is simply the CRC of all possible eight bit values. This is all - /// the information needed to generate CRC's on data a byte at a time for all - /// combinations of CRC register values and incoming bytes. - /// - public sealed class CRC32ChecksumModule : ChecksumModule - { - const uint CrcSeed = 0xFFFFFFFF; + /// + /// Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + /// x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + /// + /// Polynomials over GF(2) are represented in binary, one bit per coefficient, + /// with the lowest powers in the most significant bit. Then adding polynomials + /// is just exclusive-or, and multiplying a polynomial by x is a right shift by + /// one. If we call the above polynomial p, and represent a byte as the + /// polynomial q, also with the lowest power in the most significant bit (so the + /// byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + /// where a mod b means the remainder after dividing a by b. + /// + /// This calculation is done using the shift-register method of multiplying and + /// taking the remainder. The register is initialized to zero, and for each + /// incoming bit, x^32 is added mod p to the register if the bit is a one (where + /// x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + /// x (which is shifting right by one and adding x^32 mod p if the bit shifted + /// out is a one). We start with the highest power (least significant bit) of + /// q and repeat for all eight bits of q. + /// + /// The table is simply the CRC of all possible eight bit values. This is all + /// the information needed to generate CRC's on data a byte at a time for all + /// combinations of CRC register values and incoming bytes. + /// + public sealed class CRC32ChecksumModule : ChecksumModule + { + const uint CrcSeed = 0xFFFFFFFF; - public override string Name - { - get { return "CRC32"; } - } + public override string Name + { + get { return "CRC32"; } + } - readonly static uint[] CrcTable = new uint[] { + readonly static uint[] CrcTable = new uint[] { 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, @@ -128,81 +128,81 @@ namespace UniversalEditor.Checksum.Modules.CRC32 0x2D02EF8D }; - private static uint ComputeCrc32(uint oldCrc, byte value) - { - return (uint)(CrcTable[(oldCrc ^ value) & 0xFF] ^ (oldCrc >> 8)); - } + private static uint ComputeCrc32(uint oldCrc, byte value) + { + return (uint)(CrcTable[(oldCrc ^ value) & 0xFF] ^ (oldCrc >> 8)); + } - /// - /// The crc data checksum so far. - /// - uint crc; + /// + /// The crc data checksum so far. + /// + uint crc; - /// - /// Returns the CRC32 data checksum computed so far. - /// - public override long Value - { - get - { - return (long)crc; - } - } + /// + /// Returns the CRC32 data checksum computed so far. + /// + public override long Value + { + get + { + return (long)crc; + } + } - /// - /// Updates the checksum with the int bval. - /// - /// - /// the byte is taken as the lower 8 bits of value - /// - public override void Update(int value) - { - crc ^= CrcSeed; - crc = CrcTable[(crc ^ value) & 0xFF] ^ (crc >> 8); - crc ^= CrcSeed; - } + /// + /// Updates the checksum with the int bval. + /// + /// + /// the byte is taken as the lower 8 bits of value + /// + public override void Update(int value) + { + crc ^= CrcSeed; + crc = CrcTable[(crc ^ value) & 0xFF] ^ (crc >> 8); + crc ^= CrcSeed; + } - /// - /// Adds the byte array to the data checksum. - /// - /// - /// The buffer which contains the data - /// - /// - /// The offset in the buffer where the data starts - /// - /// - /// The number of data bytes to update the CRC with. - /// - public override void Update(byte[] buffer, int offset, int count) - { - if (buffer == null) - { - throw new ArgumentNullException("buffer"); - } + /// + /// Adds the byte array to the data checksum. + /// + /// + /// The buffer which contains the data + /// + /// + /// The offset in the buffer where the data starts + /// + /// + /// The number of data bytes to update the CRC with. + /// + public override void Update(byte[] buffer, int offset, int count) + { + if (buffer == null) + { + throw new ArgumentNullException("buffer"); + } - if (count < 0) - { + if (count < 0) + { #if NETCF_1_0 throw new ArgumentOutOfRangeException("count"); #else - throw new ArgumentOutOfRangeException("count", "Count cannot be less than zero"); + throw new ArgumentOutOfRangeException("count", "Count cannot be less than zero"); #endif - } + } - if (offset < 0 || offset + count > buffer.Length) - { - throw new ArgumentOutOfRangeException("offset"); - } + if (offset < 0 || offset + count > buffer.Length) + { + throw new ArgumentOutOfRangeException("offset"); + } - crc ^= CrcSeed; + crc ^= CrcSeed; - while (--count >= 0) - { - crc = CrcTable[(crc ^ buffer[offset++]) & 0xFF] ^ (crc >> 8); - } + while (--count >= 0) + { + crc = CrcTable[(crc ^ buffer[offset++]) & 0xFF] ^ (crc >> 8); + } - crc ^= CrcSeed; - } - } + crc ^= CrcSeed; + } + } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/StrangeCRC/StrangeCRCChecksumModule.cs b/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/StrangeCRC/StrangeCRCChecksumModule.cs index 70868113..917ee79b 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/StrangeCRC/StrangeCRCChecksumModule.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Checksum/Modules/StrangeCRC/StrangeCRCChecksumModule.cs @@ -45,10 +45,10 @@ namespace UniversalEditor.Checksum.Modules.StrangeCRC /// public class StrangeCRCChecksumModule : ChecksumModule { - public override string Name { get { return "StrangeCRC"; } } + public override string Name { get { return "StrangeCRC"; } } readonly static uint[] crc32Table = - { + { 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, diff --git a/CSharp/Libraries/UniversalEditor.Core/Document.cs b/CSharp/Libraries/UniversalEditor.Core/Document.cs index 54222ccb..31e2db9c 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Document.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Document.cs @@ -5,19 +5,19 @@ using System.Text; namespace UniversalEditor { - /// - /// Represents a combination of , , and - /// that allows you to easily manipulate documents. The Accessor determines WHERE the data is read from and written - /// to, the DataFormat determines HOW the data is written, and the ObjectModel contains the actual data in a format- - /// agnostic representation. - /// - public class Document - { - private Accessor mvarInputAccessor = null; - /// - /// The which determines where the data is read from. - /// - public Accessor InputAccessor { get { return mvarInputAccessor; } set { mvarInputAccessor = value; } } + /// + /// Represents a combination of , , and + /// that allows you to easily manipulate documents. The Accessor determines WHERE the data is read from and written + /// to, the DataFormat determines HOW the data is written, and the ObjectModel contains the actual data in a format- + /// agnostic representation. + /// + public class Document + { + private Accessor mvarInputAccessor = null; + /// + /// The which determines where the data is read from. + /// + public Accessor InputAccessor { get { return mvarInputAccessor; } set { mvarInputAccessor = value; } } private Accessor mvarOutputAccessor = null; /// @@ -25,11 +25,11 @@ namespace UniversalEditor /// public Accessor OutputAccessor { get { return mvarOutputAccessor; } set { mvarOutputAccessor = value; } } - private DataFormat mvarInputDataFormat = null; - /// + private DataFormat mvarInputDataFormat = null; + /// /// The which determines how the data is read from the accessor. - /// - public DataFormat InputDataFormat { get { return mvarInputDataFormat; } set { mvarInputDataFormat = value; } } + /// + public DataFormat InputDataFormat { get { return mvarInputDataFormat; } set { mvarInputDataFormat = value; } } private DataFormat mvarOutputDataFormat = null; /// @@ -37,57 +37,57 @@ namespace UniversalEditor /// public DataFormat OutputDataFormat { get { return mvarOutputDataFormat; } set { mvarOutputDataFormat = value; } } - private ObjectModel mvarObjectModel = null; - /// - /// The , which stores the actual data in a format-agnostic representation. - /// - public ObjectModel ObjectModel { get { return mvarObjectModel; } set { mvarObjectModel = value; } } + private ObjectModel mvarObjectModel = null; + /// + /// The , which stores the actual data in a format-agnostic representation. + /// + public ObjectModel ObjectModel { get { return mvarObjectModel; } set { mvarObjectModel = value; } } - /// - /// Reads data into the current from the using the - /// current . - /// - public void Load() - { - mvarInputDataFormat.Accessor = mvarInputAccessor; - mvarObjectModel.Accessor = mvarInputAccessor; + /// + /// Reads data into the current from the using the + /// current . + /// + public void Load() + { + mvarInputDataFormat.Accessor = mvarInputAccessor; + mvarObjectModel.Accessor = mvarInputAccessor; mvarInputDataFormat.Load(ref mvarObjectModel); mvarLastUsedAccessor = LastUsedAccessor.Input; - } - /// - /// Writes the data contained in the to the using the - /// current . - /// - public void Save() - { - mvarOutputDataFormat.Accessor = mvarOutputAccessor; - mvarObjectModel.Accessor = mvarOutputAccessor; + } + /// + /// Writes the data contained in the to the using the + /// current . + /// + public void Save() + { + mvarOutputDataFormat.Accessor = mvarOutputAccessor; + mvarObjectModel.Accessor = mvarOutputAccessor; mvarOutputDataFormat.Save(mvarObjectModel); mvarLastUsedAccessor = LastUsedAccessor.Output; - } + } - public Document(ObjectModel objectModel, DataFormat dataFormat) : this(objectModel, dataFormat, null) - { - } - public Document(ObjectModel objectModel, DataFormat dataFormat, Accessor accessor) : this(objectModel, dataFormat, dataFormat, accessor) + public Document(ObjectModel objectModel, DataFormat dataFormat) : this(objectModel, dataFormat, null) + { + } + public Document(ObjectModel objectModel, DataFormat dataFormat, Accessor accessor) : this(objectModel, dataFormat, dataFormat, accessor) { } public Document(ObjectModel objectModel, DataFormat inputDataFormat, DataFormat outputDataFormat, Accessor accessor) : this(objectModel, inputDataFormat, outputDataFormat, accessor, accessor) { } public Document(ObjectModel objectModel, DataFormat inputDataFormat, DataFormat outputDataFormat, Accessor inputAccessor, Accessor outputAccessor) - { - mvarObjectModel = objectModel; + { + mvarObjectModel = objectModel; mvarInputDataFormat = inputDataFormat; mvarOutputDataFormat = outputDataFormat; - mvarInputAccessor = inputAccessor; + mvarInputAccessor = inputAccessor; mvarOutputAccessor = outputAccessor; - } + } public static Document Load(ObjectModel objectModel, DataFormat dataFormat, Accessor accessor, bool autoClose = true) { Document document = new Document(objectModel, dataFormat, accessor); - objectModel.Accessor = document.InputAccessor; + objectModel.Accessor = document.InputAccessor; document.InputAccessor.Open(); document.Load(); if (autoClose) document.InputAccessor.Close(); @@ -95,8 +95,8 @@ namespace UniversalEditor } public static Document Save(ObjectModel objectModel, DataFormat dataFormat, Accessor accessor, bool autoClose = true) { - Document document = new Document(objectModel, dataFormat, accessor); - objectModel.Accessor = document.OutputAccessor; + Document document = new Document(objectModel, dataFormat, accessor); + objectModel.Accessor = document.OutputAccessor; document.OutputAccessor.Open(); document.Save(); if (autoClose) document.OutputAccessor.Close(); diff --git a/CSharp/Libraries/UniversalEditor.Core/ExtensionMethods.cs b/CSharp/Libraries/UniversalEditor.Core/ExtensionMethods.cs index c939d3e9..384a419a 100644 --- a/CSharp/Libraries/UniversalEditor.Core/ExtensionMethods.cs +++ b/CSharp/Libraries/UniversalEditor.Core/ExtensionMethods.cs @@ -528,13 +528,13 @@ namespace UniversalEditor } public static byte[] ToByteArray(this System.IO.Stream stream) { - long oldpos = stream.Position; + long oldpos = stream.Position; byte[] array = new byte[(int)((IntPtr)stream.Length)]; stream.Position = 0L; stream.Read(array, 0, array.Length); - stream.Position = oldpos; + stream.Position = oldpos; return array; } #endregion diff --git a/CSharp/Libraries/UniversalEditor.Core/IO/Encoding.cs b/CSharp/Libraries/UniversalEditor.Core/IO/Encoding.cs index 94e3d2ef..f35e66bc 100644 --- a/CSharp/Libraries/UniversalEditor.Core/IO/Encoding.cs +++ b/CSharp/Libraries/UniversalEditor.Core/IO/Encoding.cs @@ -17,12 +17,12 @@ namespace UniversalEditor.IO { - public abstract class Encoding - { - private static Encoding _Default = new DefaultEncoding(); - public static Encoding Default - { - get { return _Default; } + public abstract class Encoding + { + private static Encoding _Default = new DefaultEncoding(); + public static Encoding Default + { + get { return _Default; } } private static Encoding _ASCII = new ASCIIEncoding(); public static Encoding ASCII @@ -62,32 +62,32 @@ namespace UniversalEditor.IO get { return _ShiftJIS; } } - public byte[] GetBytes(string value) - { - return GetBytes(value.ToCharArray()); - } - public byte[] GetBytes(char[] chars) - { - return GetBytes(chars, 0, chars.Length); - } - public abstract byte[] GetBytes(char[] chars, int index, int count); + public byte[] GetBytes(string value) + { + return GetBytes(value.ToCharArray()); + } + public byte[] GetBytes(char[] chars) + { + return GetBytes(chars, 0, chars.Length); + } + public abstract byte[] GetBytes(char[] chars, int index, int count); - public string GetString(byte[] bytes) - { - return GetString(bytes, 0, bytes.Length); - } - public string GetString(byte[] bytes, int index, int count) - { - char[] chars = GetChars(bytes, index, count); + public string GetString(byte[] bytes) + { + return GetString(bytes, 0, bytes.Length); + } + public string GetString(byte[] bytes, int index, int count) + { + char[] chars = GetChars(bytes, index, count); string retval = new string(chars); - return retval; - } + return retval; + } - public char[] GetChars(byte[] bytes) - { - return GetChars(bytes, 0, bytes.Length); - } - public abstract char[] GetChars(byte[] bytes, int index, int count); + public char[] GetChars(byte[] bytes) + { + return GetChars(bytes, 0, bytes.Length); + } + public abstract char[] GetChars(byte[] bytes, int index, int count); public virtual int GetMaxByteCount(int count) { @@ -115,27 +115,27 @@ namespace UniversalEditor.IO return GetByteCount(chars, 0, chars.Length); } } - public class DefaultEncoding : Encoding - { - public override byte[] GetBytes(char[] chars, int index, int count) - { - byte[] bytes = new byte[count]; - for (int i = 0; i < chars.Length; i++) - { - bytes[i] = (byte)(chars[i]); - } - return bytes; - } - public override char[] GetChars(byte[] bytes, int index, int count) - { - char[] retval = new char[count]; - for (int i = 0; i < count; i++) - { - retval[i] = (char)bytes[i]; - } - return retval; - } - } + public class DefaultEncoding : Encoding + { + public override byte[] GetBytes(char[] chars, int index, int count) + { + byte[] bytes = new byte[count]; + for (int i = 0; i < chars.Length; i++) + { + bytes[i] = (byte)(chars[i]); + } + return bytes; + } + public override char[] GetChars(byte[] bytes, int index, int count) + { + char[] retval = new char[count]; + for (int i = 0; i < count; i++) + { + retval[i] = (char)bytes[i]; + } + return retval; + } + } public class ASCIIEncoding : Encoding { private System.Text.Encoding _encoding = System.Text.Encoding.ASCII; diff --git a/CSharp/Libraries/UniversalEditor.Core/IO/Writer.cs b/CSharp/Libraries/UniversalEditor.Core/IO/Writer.cs index 57c1e8b9..90372328 100644 --- a/CSharp/Libraries/UniversalEditor.Core/IO/Writer.cs +++ b/CSharp/Libraries/UniversalEditor.Core/IO/Writer.cs @@ -21,9 +21,9 @@ using System.IO; namespace UniversalEditor.IO { - public class Writer + public class Writer { - private Accessor mvarAccessor = null; + private Accessor mvarAccessor = null; public Accessor Accessor { get { return mvarAccessor; } } private Endianness mvarEndianness = Endianness.LittleEndian; @@ -33,71 +33,71 @@ namespace UniversalEditor.IO set { mvarEndianness = value; } } - private NewLineSequence mvarNewLineSequence = NewLineSequence.Default; - public NewLineSequence NewLineSequence { get { return mvarNewLineSequence; } set { mvarNewLineSequence = value; } } - public string GetNewLineSequence() - { - string newline = System.Environment.NewLine; - switch (mvarNewLineSequence) - { - case IO.NewLineSequence.CarriageReturn: - { - newline = "\r"; - break; - } - case IO.NewLineSequence.LineFeed: - { - newline = "\n"; - break; - } - case IO.NewLineSequence.CarriageReturnLineFeed: - { - newline = "\r\n"; - break; - } - } - return newline; - } + private NewLineSequence mvarNewLineSequence = NewLineSequence.Default; + public NewLineSequence NewLineSequence { get { return mvarNewLineSequence; } set { mvarNewLineSequence = value; } } + public string GetNewLineSequence() + { + string newline = System.Environment.NewLine; + switch (mvarNewLineSequence) + { + case IO.NewLineSequence.CarriageReturn: + { + newline = "\r"; + break; + } + case IO.NewLineSequence.LineFeed: + { + newline = "\n"; + break; + } + case IO.NewLineSequence.CarriageReturnLineFeed: + { + newline = "\r\n"; + break; + } + } + return newline; + } - public void SwapEndianness() - { - if (mvarEndianness == IO.Endianness.LittleEndian) - { - mvarEndianness = IO.Endianness.BigEndian; - } - else - { - mvarEndianness = IO.Endianness.LittleEndian; - } - } + public void SwapEndianness() + { + if (mvarEndianness == IO.Endianness.LittleEndian) + { + mvarEndianness = IO.Endianness.BigEndian; + } + else + { + mvarEndianness = IO.Endianness.LittleEndian; + } + } - public Writer(Accessor accessor) - { - mvarAccessor = accessor; - } + public Writer(Accessor accessor) + { + mvarAccessor = accessor; + } - public void Write(byte[] buffer, int start, int count) - { - mvarAccessor.WriteInternal(buffer, start, count); - } + public void Write(byte[] buffer, int start, int count) + { + mvarAccessor.WriteInternal(buffer, start, count); + } public void WriteBoolean(bool value) { WriteByte(value ? (byte)1 : (byte)0); } - public void WriteByte(byte value) - { - WriteBytes(new byte[] { value }); - } - public void WriteSByte(sbyte value) - { - WriteBytes(new byte[] { (byte)value }); - } - public void WriteBytes(byte[] data) - { - if (data == null) return; - Write(data, 0, data.Length); - } + public void WriteByte(byte value) + { + WriteBytes(new byte[] { value }); + } + public void WriteSByte(sbyte value) + { + WriteBytes(new byte[] { (byte)value }); + } + public void WriteBytes(byte[] data) + { + if (data == null) return; + Write(data, 0, data.Length); + } public void WriteFixedLengthBytes(byte[] data, int count) { @@ -106,163 +106,163 @@ namespace UniversalEditor.IO WriteBytes(realdata); } - public void WriteChar(char value) - { - WriteChar(value, mvarAccessor.DefaultEncoding); - } - public void WriteChar(char value, Encoding encoding) - { - byte[] data = encoding.GetBytes(new char[] { value }); - WriteBytes(data); - } + public void WriteChar(char value) + { + WriteChar(value, mvarAccessor.DefaultEncoding); + } + public void WriteChar(char value, Encoding encoding) + { + byte[] data = encoding.GetBytes(new char[] { value }); + WriteBytes(data); + } - public void Write(char value) - { - Write(value.ToString()); - } - public void Write(string value) - { - WriteFixedLengthString(value); - } - public void WriteLine() - { - WriteLine(String.Empty); - } - public void WriteLine(char value) - { - WriteLine(value.ToString()); - } - public void WriteLine(string value) - { - WriteFixedLengthString(value + GetNewLineSequence()); - } + public void Write(char value) + { + Write(value.ToString()); + } + public void Write(string value) + { + WriteFixedLengthString(value); + } + public void WriteLine() + { + WriteLine(String.Empty); + } + public void WriteLine(char value) + { + WriteLine(value.ToString()); + } + public void WriteLine(string value) + { + WriteFixedLengthString(value + GetNewLineSequence()); + } - public void WriteGuid(Guid guid) - { - WriteBytes(guid.ToByteArray()); - } - public void WriteFixedLengthString(string value) - { - WriteFixedLengthString(value, mvarAccessor.DefaultEncoding); - } - public void WriteFixedLengthString(string value, int length) - { - WriteFixedLengthString(value, mvarAccessor.DefaultEncoding, length); - } - public void WriteFixedLengthString(string value, uint length) - { + public void WriteGuid(Guid guid) + { + WriteBytes(guid.ToByteArray()); + } + public void WriteFixedLengthString(string value) + { + WriteFixedLengthString(value, mvarAccessor.DefaultEncoding); + } + public void WriteFixedLengthString(string value, int length) + { WriteFixedLengthString(value, mvarAccessor.DefaultEncoding, length); - } - public void WriteFixedLengthString(string value, Encoding encoding) - { - byte[] data = encoding.GetBytes(value); - WriteBytes(data); - } - public void WriteFixedLengthString(string value, int length, char paddingChar) - { + } + public void WriteFixedLengthString(string value, uint length) + { + WriteFixedLengthString(value, mvarAccessor.DefaultEncoding, length); + } + public void WriteFixedLengthString(string value, Encoding encoding) + { + byte[] data = encoding.GetBytes(value); + WriteBytes(data); + } + public void WriteFixedLengthString(string value, int length, char paddingChar) + { WriteFixedLengthString(value, mvarAccessor.DefaultEncoding, length, paddingChar); - } - public void WriteFixedLengthString(string value, uint length, char paddingChar) - { + } + public void WriteFixedLengthString(string value, uint length, char paddingChar) + { this.WriteFixedLengthString(value, mvarAccessor.DefaultEncoding, length, paddingChar); - } - public void WriteFixedLengthString(string value, Encoding encoding, int length) - { - this.WriteFixedLengthString(value, encoding, length, '\0'); - } - public void WriteFixedLengthString(string value, Encoding encoding, uint length) - { - WriteFixedLengthString(value, encoding, length, '\0'); - } - public void WriteFixedLengthString(string value, Encoding encoding, int length, char paddingChar) - { - WriteFixedLengthString(value, encoding, (uint)length, paddingChar); - } - public void WriteFixedLengthString(string value, Encoding encoding, uint length, char paddingChar) - { - string v = value; + } + public void WriteFixedLengthString(string value, Encoding encoding, int length) + { + this.WriteFixedLengthString(value, encoding, length, '\0'); + } + public void WriteFixedLengthString(string value, Encoding encoding, uint length) + { + WriteFixedLengthString(value, encoding, length, '\0'); + } + public void WriteFixedLengthString(string value, Encoding encoding, int length, char paddingChar) + { + WriteFixedLengthString(value, encoding, (uint)length, paddingChar); + } + public void WriteFixedLengthString(string value, Encoding encoding, uint length, char paddingChar) + { + string v = value; if (v == null) v = String.Empty; - byte[] data = encoding.GetBytes(v); - byte[] realData = new byte[length]; + byte[] data = encoding.GetBytes(v); + byte[] realData = new byte[length]; - uint realLength = length; - if (data.Length < realLength) - { - realLength = (uint)data.Length; - } - Array.Copy(data, 0, realData, 0, realLength); + uint realLength = length; + if (data.Length < realLength) + { + realLength = (uint)data.Length; + } + Array.Copy(data, 0, realData, 0, realLength); - for (int i = data.Length; i < realData.Length; i++) - { - realData[i] = (byte)paddingChar; - } - WriteBytes(realData); - } + for (int i = data.Length; i < realData.Length; i++) + { + realData[i] = (byte)paddingChar; + } + WriteBytes(realData); + } - public void WriteLengthPrefixedString(string value) - { - WriteLengthPrefixedString(value, mvarAccessor.DefaultEncoding); - } - public void WriteLengthPrefixedString(string value, Encoding encoding) - { - throw new NotImplementedException(); - } + public void WriteLengthPrefixedString(string value) + { + WriteLengthPrefixedString(value, mvarAccessor.DefaultEncoding); + } + public void WriteLengthPrefixedString(string value, Encoding encoding) + { + throw new NotImplementedException(); + } - public void WriteNullTerminatedString(string sz) - { - if (sz != null) - { - for (int i = 0; i < sz.Length; i++) - { - WriteChar(sz[i]); - } - } - WriteChar('\0'); - } - public void WriteNullTerminatedString(string sz, Encoding encoding) - { + public void WriteNullTerminatedString(string sz) + { + if (sz != null) + { + for (int i = 0; i < sz.Length; i++) + { + WriteChar(sz[i]); + } + } + WriteChar('\0'); + } + public void WriteNullTerminatedString(string sz, Encoding encoding) + { byte[] values = encoding.GetBytes(sz); WriteBytes(values); WriteInt16(0); - } - public void WriteNullTerminatedString(string sz, int length) - { - this.WriteFixedLengthString(sz, length); - } - - public void WriteInt16(short value) - { - byte[] _buffer = BitConverter.GetBytes(value); - byte[] buffer = new byte[2]; - if (mvarEndianness == Endianness.BigEndian) - { - buffer[1] = _buffer[0]; - buffer[0] = _buffer[1]; - } - else - { - buffer[0] = _buffer[0]; - buffer[1] = _buffer[1]; - } - WriteBytes(buffer); - } - public void WriteUInt16(ushort value) - { - byte[] _buffer = BitConverter.GetBytes(value); - byte[] buffer = new byte[2]; - if (mvarEndianness == Endianness.BigEndian) - { - buffer[1] = _buffer[0]; - buffer[0] = _buffer[1]; - } - else - { - buffer[0] = _buffer[0]; - buffer[1] = _buffer[1]; - } - WriteBytes(buffer); - } + } + public void WriteNullTerminatedString(string sz, int length) + { + this.WriteFixedLengthString(sz, length); + } + + public void WriteInt16(short value) + { + byte[] _buffer = BitConverter.GetBytes(value); + byte[] buffer = new byte[2]; + if (mvarEndianness == Endianness.BigEndian) + { + buffer[1] = _buffer[0]; + buffer[0] = _buffer[1]; + } + else + { + buffer[0] = _buffer[0]; + buffer[1] = _buffer[1]; + } + WriteBytes(buffer); + } + public void WriteUInt16(ushort value) + { + byte[] _buffer = BitConverter.GetBytes(value); + byte[] buffer = new byte[2]; + if (mvarEndianness == Endianness.BigEndian) + { + buffer[1] = _buffer[0]; + buffer[0] = _buffer[1]; + } + else + { + buffer[0] = _buffer[0]; + buffer[1] = _buffer[1]; + } + WriteBytes(buffer); + } public void WriteInt24 (int value) { byte[] buffer = new byte[3]; @@ -280,117 +280,117 @@ namespace UniversalEditor.IO } WriteBytes(buffer); } - public void WriteUInt24(uint value) - { - byte[] buffer = new byte[3]; - if (mvarEndianness == Endianness.BigEndian) - { - buffer[2] = (byte)value; - buffer[1] = (byte)(value >> 8); - buffer[0] = (byte)(value >> 16); - } - else - { - buffer[0] = (byte)value; - buffer[1] = (byte)(value >> 8); - buffer[2] = (byte)(value >> 16); - } - WriteBytes(buffer); - } - public void WriteInt32(int value) - { - byte[] _buffer = BitConverter.GetBytes(value); - byte[] buffer = new byte[4]; - if (mvarEndianness == Endianness.BigEndian) - { - buffer[3] = _buffer[0]; - buffer[2] = _buffer[1]; - buffer[1] = _buffer[2]; - buffer[0] = _buffer[3]; - } - else - { - buffer[0] = _buffer[0]; - buffer[1] = _buffer[1]; - buffer[2] = _buffer[2]; - buffer[3] = _buffer[3]; - } - WriteBytes(buffer); - } - public void WriteUInt32(uint value) - { - byte[] _buffer = BitConverter.GetBytes(value); - byte[] buffer = new byte[4]; - if (mvarEndianness == Endianness.BigEndian) - { - buffer[3] = _buffer[0]; - buffer[2] = _buffer[1]; - buffer[1] = _buffer[2]; - buffer[0] = _buffer[3]; - } - else - { - buffer[0] = _buffer[0]; - buffer[1] = _buffer[1]; - buffer[2] = _buffer[2]; - buffer[3] = _buffer[3]; - } - WriteBytes(buffer); - } - public void WriteInt64(long value) - { - byte[] _buffer = new byte[8]; - if (mvarEndianness == IO.Endianness.BigEndian) - { - _buffer[0] = (byte)(value >> 56); - _buffer[1] = (byte)(value >> 48); - _buffer[2] = (byte)(value >> 40); - _buffer[3] = (byte)(value >> 32); - _buffer[4] = (byte)(value >> 24); - _buffer[5] = (byte)(value >> 16); - _buffer[6] = (byte)(value >> 8); - _buffer[7] = (byte)value; - } - else - { - _buffer[0] = (byte)value; - _buffer[1] = (byte)(value >> 8); - _buffer[2] = (byte)(value >> 16); - _buffer[3] = (byte)(value >> 24); - _buffer[4] = (byte)(value >> 32); - _buffer[5] = (byte)(value >> 40); - _buffer[6] = (byte)(value >> 48); - _buffer[7] = (byte)(value >> 56); - } - WriteBytes(_buffer); - } - public void WriteUInt64(ulong value) - { - byte[] _buffer = new byte[8]; - if (mvarEndianness == IO.Endianness.BigEndian) - { - _buffer[0] = (byte)(value >> 56); - _buffer[1] = (byte)(value >> 48); - _buffer[2] = (byte)(value >> 40); - _buffer[3] = (byte)(value >> 32); - _buffer[4] = (byte)(value >> 24); - _buffer[5] = (byte)(value >> 16); - _buffer[6] = (byte)(value >> 8); - _buffer[7] = (byte)value; - } - else - { - _buffer[0] = (byte)value; - _buffer[1] = (byte)(value >> 8); - _buffer[2] = (byte)(value >> 16); - _buffer[3] = (byte)(value >> 24); - _buffer[4] = (byte)(value >> 32); - _buffer[5] = (byte)(value >> 40); - _buffer[6] = (byte)(value >> 48); - _buffer[7] = (byte)(value >> 56); - } - WriteBytes(_buffer); - } + public void WriteUInt24(uint value) + { + byte[] buffer = new byte[3]; + if (mvarEndianness == Endianness.BigEndian) + { + buffer[2] = (byte)value; + buffer[1] = (byte)(value >> 8); + buffer[0] = (byte)(value >> 16); + } + else + { + buffer[0] = (byte)value; + buffer[1] = (byte)(value >> 8); + buffer[2] = (byte)(value >> 16); + } + WriteBytes(buffer); + } + public void WriteInt32(int value) + { + byte[] _buffer = BitConverter.GetBytes(value); + byte[] buffer = new byte[4]; + if (mvarEndianness == Endianness.BigEndian) + { + buffer[3] = _buffer[0]; + buffer[2] = _buffer[1]; + buffer[1] = _buffer[2]; + buffer[0] = _buffer[3]; + } + else + { + buffer[0] = _buffer[0]; + buffer[1] = _buffer[1]; + buffer[2] = _buffer[2]; + buffer[3] = _buffer[3]; + } + WriteBytes(buffer); + } + public void WriteUInt32(uint value) + { + byte[] _buffer = BitConverter.GetBytes(value); + byte[] buffer = new byte[4]; + if (mvarEndianness == Endianness.BigEndian) + { + buffer[3] = _buffer[0]; + buffer[2] = _buffer[1]; + buffer[1] = _buffer[2]; + buffer[0] = _buffer[3]; + } + else + { + buffer[0] = _buffer[0]; + buffer[1] = _buffer[1]; + buffer[2] = _buffer[2]; + buffer[3] = _buffer[3]; + } + WriteBytes(buffer); + } + public void WriteInt64(long value) + { + byte[] _buffer = new byte[8]; + if (mvarEndianness == IO.Endianness.BigEndian) + { + _buffer[0] = (byte)(value >> 56); + _buffer[1] = (byte)(value >> 48); + _buffer[2] = (byte)(value >> 40); + _buffer[3] = (byte)(value >> 32); + _buffer[4] = (byte)(value >> 24); + _buffer[5] = (byte)(value >> 16); + _buffer[6] = (byte)(value >> 8); + _buffer[7] = (byte)value; + } + else + { + _buffer[0] = (byte)value; + _buffer[1] = (byte)(value >> 8); + _buffer[2] = (byte)(value >> 16); + _buffer[3] = (byte)(value >> 24); + _buffer[4] = (byte)(value >> 32); + _buffer[5] = (byte)(value >> 40); + _buffer[6] = (byte)(value >> 48); + _buffer[7] = (byte)(value >> 56); + } + WriteBytes(_buffer); + } + public void WriteUInt64(ulong value) + { + byte[] _buffer = new byte[8]; + if (mvarEndianness == IO.Endianness.BigEndian) + { + _buffer[0] = (byte)(value >> 56); + _buffer[1] = (byte)(value >> 48); + _buffer[2] = (byte)(value >> 40); + _buffer[3] = (byte)(value >> 32); + _buffer[4] = (byte)(value >> 24); + _buffer[5] = (byte)(value >> 16); + _buffer[6] = (byte)(value >> 8); + _buffer[7] = (byte)value; + } + else + { + _buffer[0] = (byte)value; + _buffer[1] = (byte)(value >> 8); + _buffer[2] = (byte)(value >> 16); + _buffer[3] = (byte)(value >> 24); + _buffer[4] = (byte)(value >> 32); + _buffer[5] = (byte)(value >> 40); + _buffer[6] = (byte)(value >> 48); + _buffer[7] = (byte)(value >> 56); + } + WriteBytes(_buffer); + } public void WriteObject (object value) { @@ -485,104 +485,104 @@ namespace UniversalEditor.IO WriteInt64(value.ToBinary()); } - public void WriteDecimal(decimal value) - { - int[] bits = decimal.GetBits(value); - int lo = bits[0], mid = bits[1], hi = bits[2], flags = bits[3]; + public void WriteDecimal(decimal value) + { + int[] bits = decimal.GetBits(value); + int lo = bits[0], mid = bits[1], hi = bits[2], flags = bits[3]; - byte[] buffer = new byte[16]; - if (mvarEndianness == IO.Endianness.LittleEndian) - { - buffer[0] = (byte)lo; - buffer[1] = (byte)(lo >> 8); - buffer[2] = (byte)(lo >> 16); - buffer[3] = (byte)(lo >> 24); - buffer[4] = (byte)mid; - buffer[5] = (byte)(mid >> 8); - buffer[6] = (byte)(mid >> 16); - buffer[7] = (byte)(mid >> 24); - buffer[8] = (byte)hi; - buffer[9] = (byte)(hi >> 8); - buffer[10] = (byte)(hi >> 16); - buffer[11] = (byte)(hi >> 24); - buffer[12] = (byte)flags; - buffer[13] = (byte)(flags >> 8); - buffer[14] = (byte)(flags >> 16); - buffer[15] = (byte)(flags >> 24); - } - else - { - buffer[15] = (byte)lo; - buffer[14] = (byte)(lo >> 8); - buffer[13] = (byte)(lo >> 16); - buffer[12] = (byte)(lo >> 24); - buffer[11] = (byte)mid; - buffer[10] = (byte)(mid >> 8); - buffer[9] = (byte)(mid >> 16); - buffer[9] = (byte)(mid >> 24); - buffer[7] = (byte)hi; - buffer[6] = (byte)(hi >> 8); - buffer[5] = (byte)(hi >> 16); - buffer[4] = (byte)(hi >> 24); - buffer[3] = (byte)flags; - buffer[2] = (byte)(flags >> 8); - buffer[1] = (byte)(flags >> 16); - buffer[0] = (byte)(flags >> 24); - } - WriteBytes(buffer); - } + byte[] buffer = new byte[16]; + if (mvarEndianness == IO.Endianness.LittleEndian) + { + buffer[0] = (byte)lo; + buffer[1] = (byte)(lo >> 8); + buffer[2] = (byte)(lo >> 16); + buffer[3] = (byte)(lo >> 24); + buffer[4] = (byte)mid; + buffer[5] = (byte)(mid >> 8); + buffer[6] = (byte)(mid >> 16); + buffer[7] = (byte)(mid >> 24); + buffer[8] = (byte)hi; + buffer[9] = (byte)(hi >> 8); + buffer[10] = (byte)(hi >> 16); + buffer[11] = (byte)(hi >> 24); + buffer[12] = (byte)flags; + buffer[13] = (byte)(flags >> 8); + buffer[14] = (byte)(flags >> 16); + buffer[15] = (byte)(flags >> 24); + } + else + { + buffer[15] = (byte)lo; + buffer[14] = (byte)(lo >> 8); + buffer[13] = (byte)(lo >> 16); + buffer[12] = (byte)(lo >> 24); + buffer[11] = (byte)mid; + buffer[10] = (byte)(mid >> 8); + buffer[9] = (byte)(mid >> 16); + buffer[9] = (byte)(mid >> 24); + buffer[7] = (byte)hi; + buffer[6] = (byte)(hi >> 8); + buffer[5] = (byte)(hi >> 16); + buffer[4] = (byte)(hi >> 24); + buffer[3] = (byte)flags; + buffer[2] = (byte)(flags >> 8); + buffer[1] = (byte)(flags >> 16); + buffer[0] = (byte)(flags >> 24); + } + WriteBytes(buffer); + } - public void WriteVersion(Version version) - { - WriteVersion(version, 4); - } - public void WriteVersion(Version version, int count) - { - switch (count) - { - case 1: - { - WriteByte(1); - WriteInt32(version.Major); - break; - } - case 2: - { - WriteByte(2); - WriteInt32(version.Major); - WriteInt32(version.Minor); - break; - } - case 3: - { - WriteByte(3); - WriteInt32(version.Major); - WriteInt32(version.Minor); - WriteInt32(version.Build); - break; - } - case 4: - { - WriteByte(4); - WriteInt32(version.Major); - WriteInt32(version.Minor); - WriteInt32(version.Build); - WriteInt32(version.Revision); - break; - } - } - } + public void WriteVersion(Version version) + { + WriteVersion(version, 4); + } + public void WriteVersion(Version version, int count) + { + switch (count) + { + case 1: + { + WriteByte(1); + WriteInt32(version.Major); + break; + } + case 2: + { + WriteByte(2); + WriteInt32(version.Major); + WriteInt32(version.Minor); + break; + } + case 3: + { + WriteByte(3); + WriteInt32(version.Major); + WriteInt32(version.Minor); + WriteInt32(version.Build); + break; + } + case 4: + { + WriteByte(4); + WriteInt32(version.Major); + WriteInt32(version.Minor); + WriteInt32(version.Build); + WriteInt32(version.Revision); + break; + } + } + } - public long CountAlignment(int paddingCount) - { - return CountAlignment(paddingCount, 0); - } - public long CountAlignment(int paddingCount, int dataCount) - { - long position = (mvarAccessor.Position + dataCount); - int num = (int)(position % paddingCount); - return num; - } + public long CountAlignment(int paddingCount) + { + return CountAlignment(paddingCount, 0); + } + public long CountAlignment(int paddingCount, int dataCount) + { + long position = (mvarAccessor.Position + dataCount); + int num = (int)(position % paddingCount); + return num; + } public void Align(int paddingCount) @@ -600,9 +600,9 @@ namespace UniversalEditor.IO } case 4: { - long num = mvarAccessor.Position; + long num = mvarAccessor.Position; num = (num + 3L & -4L); - long num2 = num - mvarAccessor.Position; + long num2 = num - mvarAccessor.Position; byte[] array = new byte[num2]; array.Initialize(); WriteBytes(array); @@ -610,106 +610,106 @@ namespace UniversalEditor.IO } default: { - long count = (mvarAccessor.Position % paddingCount); - byte[] array = new byte[count]; - WriteBytes(array); - break; + long count = (mvarAccessor.Position % paddingCount); + byte[] array = new byte[count]; + WriteBytes(array); + break; } } } - public void WriteSingle(float value) - { - byte[] buffer = BitConverter.GetBytes(value); - byte[] _buffer = new byte[4]; - if (mvarEndianness == IO.Endianness.BigEndian) - { - _buffer[0] = buffer[3]; - _buffer[1] = buffer[2]; - _buffer[2] = buffer[1]; - _buffer[3] = buffer[0]; - } - else - { - _buffer[0] = buffer[0]; - _buffer[1] = buffer[1]; - _buffer[2] = buffer[2]; - _buffer[3] = buffer[3]; - } - WriteBytes(_buffer); - } - public void WriteDouble(double value) - { - byte[] buffer = BitConverter.GetBytes(value); - byte[] _buffer = new byte[8]; - if (mvarEndianness == IO.Endianness.BigEndian) - { - _buffer[0] = buffer[7]; - _buffer[1] = buffer[6]; - _buffer[2] = buffer[5]; - _buffer[3] = buffer[4]; - _buffer[4] = buffer[3]; - _buffer[5] = buffer[2]; - _buffer[6] = buffer[1]; - _buffer[7] = buffer[0]; - } - else - { - _buffer[0] = buffer[0]; - _buffer[1] = buffer[1]; - _buffer[2] = buffer[2]; - _buffer[3] = buffer[3]; - _buffer[4] = buffer[4]; - _buffer[5] = buffer[5]; - _buffer[6] = buffer[6]; - _buffer[7] = buffer[7]; - } - WriteBytes(_buffer); - } + public void WriteSingle(float value) + { + byte[] buffer = BitConverter.GetBytes(value); + byte[] _buffer = new byte[4]; + if (mvarEndianness == IO.Endianness.BigEndian) + { + _buffer[0] = buffer[3]; + _buffer[1] = buffer[2]; + _buffer[2] = buffer[1]; + _buffer[3] = buffer[0]; + } + else + { + _buffer[0] = buffer[0]; + _buffer[1] = buffer[1]; + _buffer[2] = buffer[2]; + _buffer[3] = buffer[3]; + } + WriteBytes(_buffer); + } + public void WriteDouble(double value) + { + byte[] buffer = BitConverter.GetBytes(value); + byte[] _buffer = new byte[8]; + if (mvarEndianness == IO.Endianness.BigEndian) + { + _buffer[0] = buffer[7]; + _buffer[1] = buffer[6]; + _buffer[2] = buffer[5]; + _buffer[3] = buffer[4]; + _buffer[4] = buffer[3]; + _buffer[5] = buffer[2]; + _buffer[6] = buffer[1]; + _buffer[7] = buffer[0]; + } + else + { + _buffer[0] = buffer[0]; + _buffer[1] = buffer[1]; + _buffer[2] = buffer[2]; + _buffer[3] = buffer[3]; + _buffer[4] = buffer[4]; + _buffer[5] = buffer[5]; + _buffer[6] = buffer[6]; + _buffer[7] = buffer[7]; + } + WriteBytes(_buffer); + } - public void WriteDoubleEndianInt16(short value) - { - WriteInt16(value); - SwapEndianness(); - WriteInt16(value); - SwapEndianness(); - } - public void WriteDoubleEndianInt32(int value) - { - WriteInt32(value); - SwapEndianness(); - WriteInt32(value); - SwapEndianness(); - } - public void WriteDoubleEndianInt64(long value) - { - WriteInt64(value); - SwapEndianness(); - WriteInt64(value); - SwapEndianness(); - } - public void WriteDoubleEndianUInt16(ushort value) - { - WriteUInt16(value); - SwapEndianness(); - WriteUInt16(value); - SwapEndianness(); - } - public void WriteDoubleEndianUInt32(uint value) - { - WriteUInt32(value); - SwapEndianness(); - WriteUInt32(value); - SwapEndianness(); - } - public void WriteDoubleEndianUInt64(ulong value) - { - WriteUInt64(value); - SwapEndianness(); - WriteUInt64(value); - SwapEndianness(); - } + public void WriteDoubleEndianInt16(short value) + { + WriteInt16(value); + SwapEndianness(); + WriteInt16(value); + SwapEndianness(); + } + public void WriteDoubleEndianInt32(int value) + { + WriteInt32(value); + SwapEndianness(); + WriteInt32(value); + SwapEndianness(); + } + public void WriteDoubleEndianInt64(long value) + { + WriteInt64(value); + SwapEndianness(); + WriteInt64(value); + SwapEndianness(); + } + public void WriteDoubleEndianUInt16(ushort value) + { + WriteUInt16(value); + SwapEndianness(); + WriteUInt16(value); + SwapEndianness(); + } + public void WriteDoubleEndianUInt32(uint value) + { + WriteUInt32(value); + SwapEndianness(); + WriteUInt32(value); + SwapEndianness(); + } + public void WriteDoubleEndianUInt64(ulong value) + { + WriteUInt64(value); + SwapEndianness(); + WriteUInt64(value); + SwapEndianness(); + } public void WriteUInt16SizedString(string value) { @@ -724,20 +724,20 @@ namespace UniversalEditor.IO WriteBytes(output); } - public void WriteInt64String(string value) - { - WriteInt64(value.Length); - WriteFixedLengthString(value); - } + public void WriteInt64String(string value) + { + WriteInt64(value.Length); + WriteFixedLengthString(value); + } - public void Flush() - { - mvarAccessor.FlushInternal(); - } + public void Flush() + { + mvarAccessor.FlushInternal(); + } public void Close() { mvarAccessor.Close(); } - } + } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Localization/StringTable.cs b/CSharp/Libraries/UniversalEditor.Core/Localization/StringTable.cs index 82865a56..4f7ade2c 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Localization/StringTable.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Localization/StringTable.cs @@ -4,24 +4,24 @@ using System.Text; namespace UniversalEditor.Localization { - public static class StringTable - { - private static string mvarApplicationName = "Universal Editor"; - public static string ApplicationName { get { return mvarApplicationName; } } + public static class StringTable + { + private static string mvarApplicationName = "Universal Editor"; + public static string ApplicationName { get { return mvarApplicationName; } } - private static string mvarErrorDataFormatNotOpen = "The data format is not open."; - public static string ErrorDataFormatNotOpen { get { return mvarErrorDataFormatNotOpen; } } + private static string mvarErrorDataFormatNotOpen = "The data format is not open."; + public static string ErrorDataFormatNotOpen { get { return mvarErrorDataFormatNotOpen; } } - private static string mvarErrorDataCorrupted = "The file is corrupted."; - public static string ErrorDataCorrupted { get { return mvarErrorDataCorrupted; } } + private static string mvarErrorDataCorrupted = "The file is corrupted."; + public static string ErrorDataCorrupted { get { return mvarErrorDataCorrupted; } } - private static string mvarErrorFileNotFound = "The file could not be found."; - public static string ErrorFileNotFound { get { return mvarErrorFileNotFound; } } - private static string mvarErrorNotAnObjectModel = "The specified type is not an object model."; - public static string ErrorNotAnObjectModel { get { return mvarErrorNotAnObjectModel; } } + private static string mvarErrorFileNotFound = "The file could not be found."; + public static string ErrorFileNotFound { get { return mvarErrorFileNotFound; } } + private static string mvarErrorNotAnObjectModel = "The specified type is not an object model."; + public static string ErrorNotAnObjectModel { get { return mvarErrorNotAnObjectModel; } } - private static string mvarErrorObjectModelNull = "The object model must not be null."; - public static string ErrorObjectModelNull { get { return mvarErrorObjectModelNull; } set { mvarErrorObjectModelNull = value; } } + private static string mvarErrorObjectModelNull = "The object model must not be null."; + public static string ErrorObjectModelNull { get { return mvarErrorObjectModelNull; } set { mvarErrorObjectModelNull = value; } } private static string mvarErrorDataFormatInvalid = "The data format is invalid."; public static string ErrorDataFormatInvalid { get { return mvarErrorDataFormatInvalid; } set { mvarErrorDataFormatInvalid = value; } } diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs index ab88565d..5e64ae68 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs @@ -178,10 +178,10 @@ namespace UniversalEditor.UserInterface.Common list.Add(editor); } } - if (!editorsByObjectModelType.ContainsKey(objectModelReference.ObjectModelType)) - { - editorsByObjectModelType.Add(objectModelReference.ObjectModelType, list.ToArray()); - } + if (!editorsByObjectModelType.ContainsKey(objectModelReference.ObjectModelType)) + { + editorsByObjectModelType.Add(objectModelReference.ObjectModelType, list.ToArray()); + } } // editorsByObjectModelType.Clear(); return editorsByObjectModelType[objectModelReference.ObjectModelType]; diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs index 91c78086..117a738d 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs @@ -169,16 +169,16 @@ namespace UniversalEditor.UserInterface editor.Redo(); }); #endregion - #region View - AttachCommandEventHandler("ViewFullScreen", delegate(object sender, EventArgs e) - { - Command cmd = (sender as Command); - LastWindow.FullScreen = !LastWindow.FullScreen; - cmd.Checked = LastWindow.FullScreen; - }); - #endregion - #region Tools - // ToolsOptions should actually be under the Edit menu as "Preferences" on Linux systems + #region View + AttachCommandEventHandler("ViewFullScreen", delegate(object sender, EventArgs e) + { + Command cmd = (sender as Command); + LastWindow.FullScreen = !LastWindow.FullScreen; + cmd.Checked = LastWindow.FullScreen; + }); + #endregion + #region Tools + // ToolsOptions should actually be under the Edit menu as "Preferences" on Linux systems AttachCommandEventHandler("ToolsOptions", delegate(object sender, EventArgs e) { LastWindow.ShowOptionsDialog(); diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/IHostApplicationWindow.cs b/CSharp/Libraries/UniversalEditor.UserInterface/IHostApplicationWindow.cs index 941ca0d2..a4892ef4 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/IHostApplicationWindow.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/IHostApplicationWindow.cs @@ -32,7 +32,7 @@ namespace UniversalEditor.UserInterface IEditorImplementation GetCurrentEditor(); - bool FullScreen { get; set; } + bool FullScreen { get; set; } /// /// Displays the "Options" dialog (on Windows, under the "Tools" menu; on Linux, under the "Edit" diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs b/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs index 6554180a..1817b521 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/MenuBar.cs @@ -6,178 +6,178 @@ namespace UniversalEditor.UserInterface { public class MenuBar { - private MenuItem.MenuItemCollection mvarItems = new MenuItem.MenuItemCollection(); - public MenuItem.MenuItemCollection Items { get { return mvarItems; } } - } + private MenuItem.MenuItemCollection mvarItems = new MenuItem.MenuItemCollection(); + public MenuItem.MenuItemCollection Items { get { return mvarItems; } } + } - public abstract class MenuItem - { - public class MenuItemCollection - : System.Collections.ObjectModel.Collection - { - private System.Collections.Generic.Dictionary itemsByName = new Dictionary(); + public abstract class MenuItem + { + public class MenuItemCollection + : System.Collections.ObjectModel.Collection + { + private System.Collections.Generic.Dictionary itemsByName = new Dictionary(); - public ActionMenuItem Add(string name, string title) - { - return Add(name, title, null); - } - public ActionMenuItem Add(string name, string title, EventHandler onClick) - { - return Add(name, title, onClick, Count); - } - public ActionMenuItem Add(string name, string title, int position) - { - return Add(name, title, null, position); - } - public ActionMenuItem Add(string name, string title, EventHandler onClick, int position) - { - ActionMenuItem item = new ActionMenuItem(name, title); - if (onClick != null) - { - item.Click += onClick; - } - item.Position = position; - Add(item); - return item; - } - public SeparatorMenuItem AddSeparator() - { - return AddSeparator(Count); - } - public SeparatorMenuItem AddSeparator(int position) - { - SeparatorMenuItem item = new SeparatorMenuItem(); - item.Position = position; - item.Name = "separator__" + (Count + 1).ToString(); - Add(item); - return item; - } + public ActionMenuItem Add(string name, string title) + { + return Add(name, title, null); + } + public ActionMenuItem Add(string name, string title, EventHandler onClick) + { + return Add(name, title, onClick, Count); + } + public ActionMenuItem Add(string name, string title, int position) + { + return Add(name, title, null, position); + } + public ActionMenuItem Add(string name, string title, EventHandler onClick, int position) + { + ActionMenuItem item = new ActionMenuItem(name, title); + if (onClick != null) + { + item.Click += onClick; + } + item.Position = position; + Add(item); + return item; + } + public SeparatorMenuItem AddSeparator() + { + return AddSeparator(Count); + } + public SeparatorMenuItem AddSeparator(int position) + { + SeparatorMenuItem item = new SeparatorMenuItem(); + item.Position = position; + item.Name = "separator__" + (Count + 1).ToString(); + Add(item); + return item; + } - public MenuItem this[string name] - { - get - { - return itemsByName[name]; - } - } + public MenuItem this[string name] + { + get + { + return itemsByName[name]; + } + } - public bool Contains(string name) - { - return itemsByName.ContainsKey(name); - } - public bool Remove(string name) - { - if (itemsByName.ContainsKey(name)) - { - base.Remove(itemsByName[name]); - return true; - } - return false; - } + public bool Contains(string name) + { + return itemsByName.ContainsKey(name); + } + public bool Remove(string name) + { + if (itemsByName.ContainsKey(name)) + { + base.Remove(itemsByName[name]); + return true; + } + return false; + } - protected override void InsertItem(int index, MenuItem item) - { - item.mvarParent = this; - base.InsertItem(index, item); - itemsByName.Add(item.Name, item); - } - protected override void RemoveItem(int index) - { - this[index].mvarParent = null; - itemsByName.Remove(this[index].Name); - base.RemoveItem(index); - } + protected override void InsertItem(int index, MenuItem item) + { + item.mvarParent = this; + base.InsertItem(index, item); + itemsByName.Add(item.Name, item); + } + protected override void RemoveItem(int index) + { + this[index].mvarParent = null; + itemsByName.Remove(this[index].Name); + base.RemoveItem(index); + } - internal void UpdateName(MenuItem item, string oldName) - { - itemsByName.Remove(oldName); - itemsByName.Add(item.Name, item); - } - } + internal void UpdateName(MenuItem item, string oldName) + { + itemsByName.Remove(oldName); + itemsByName.Add(item.Name, item); + } + } - private List mvarNativeControls = new List(); - public List NativeControls { get { return mvarNativeControls; } } + private List mvarNativeControls = new List(); + public List NativeControls { get { return mvarNativeControls; } } - private MenuItemCollection mvarParent = null; + private MenuItemCollection mvarParent = null; - private string mvarName = String.Empty; - public string Name - { - get { return mvarName; } - set - { - string oldName = mvarName; mvarName = value; - if (mvarParent != null) - { - mvarParent.UpdateName(this, oldName); - } - } - } + private string mvarName = String.Empty; + public string Name + { + get { return mvarName; } + set + { + string oldName = mvarName; mvarName = value; + if (mvarParent != null) + { + mvarParent.UpdateName(this, oldName); + } + } + } - private int mvarPosition = -1; - public int Position { get { return mvarPosition; } set { mvarPosition = value; } } + private int mvarPosition = -1; + public int Position { get { return mvarPosition; } set { mvarPosition = value; } } - private bool mvarEnabled = true; - public bool Enabled - { - get { return mvarEnabled; } - set - { - mvarEnabled = value; - foreach (object NativeControl in mvarNativeControls) - { - HostApplication.CurrentWindow.RefreshCommand(NativeControl); - } - } - } + private bool mvarEnabled = true; + public bool Enabled + { + get { return mvarEnabled; } + set + { + mvarEnabled = value; + foreach (object NativeControl in mvarNativeControls) + { + HostApplication.CurrentWindow.RefreshCommand(NativeControl); + } + } + } - private bool mvarVisible = true; - public bool Visible { get { return mvarVisible; } - set - { - mvarVisible = value; - foreach (object NativeControl in mvarNativeControls) - { - HostApplication.CurrentWindow.RefreshCommand(NativeControl); - } - } - } - } - public class ActionMenuItem : MenuItem - { - private string mvarTitle = String.Empty; - public string Title { get { return mvarTitle; } set { mvarTitle = value; } } + private bool mvarVisible = true; + public bool Visible { get { return mvarVisible; } + set + { + mvarVisible = value; + foreach (object NativeControl in mvarNativeControls) + { + HostApplication.CurrentWindow.RefreshCommand(NativeControl); + } + } + } + } + public class ActionMenuItem : MenuItem + { + private string mvarTitle = String.Empty; + public string Title { get { return mvarTitle; } set { mvarTitle = value; } } - private MenuItem.MenuItemCollection mvarItems = new MenuItem.MenuItemCollection(); - public MenuItem.MenuItemCollection Items { get { return mvarItems; } } + private MenuItem.MenuItemCollection mvarItems = new MenuItem.MenuItemCollection(); + public MenuItem.MenuItemCollection Items { get { return mvarItems; } } - private CommandDisplayStyle mvarDisplayStyle = CommandDisplayStyle.ImageOnly; - public CommandDisplayStyle DisplayStyle { get { return mvarDisplayStyle; } set { mvarDisplayStyle = value; } } + private CommandDisplayStyle mvarDisplayStyle = CommandDisplayStyle.ImageOnly; + public CommandDisplayStyle DisplayStyle { get { return mvarDisplayStyle; } set { mvarDisplayStyle = value; } } - public event EventHandler Click; + public event EventHandler Click; - public ActionMenuItem(string title) - { - base.Name = title; - mvarTitle = title; - } - public ActionMenuItem(string name, string title) - { - base.Name = name; - mvarTitle = title; - } + public ActionMenuItem(string title) + { + base.Name = title; + mvarTitle = title; + } + public ActionMenuItem(string name, string title) + { + base.Name = name; + mvarTitle = title; + } - public void OnClick(EventArgs e) - { - if (Click != null) - { - Click(this, e); - } - } - } - public class SeparatorMenuItem : MenuItem - { + public void OnClick(EventArgs e) + { + if (Click != null) + { + Click(this, e); + } + } + } + public class SeparatorMenuItem : MenuItem + { - } + } } diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Toolbar.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Toolbar.cs index fd5ad322..076b470c 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Toolbar.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Toolbar.cs @@ -9,30 +9,30 @@ namespace UniversalEditor.UserInterface public class ToolbarCollection : System.Collections.ObjectModel.Collection { - public Toolbar Add(string name) - { - return Add(name, name); - } - public Toolbar Add(string name, string title) - { - Toolbar tb = new Toolbar(); - tb.Name = name; - tb.Title = title; - Add(tb); - return tb; - } - } + public Toolbar Add(string name) + { + return Add(name, name); + } + public Toolbar Add(string name, string title) + { + Toolbar tb = new Toolbar(); + tb.Name = name; + tb.Title = title; + Add(tb); + return tb; + } + } - private string mvarName = String.Empty; - public string Name { get { return mvarName; } set { mvarName = value; } } + private string mvarName = String.Empty; + public string Name { get { return mvarName; } set { mvarName = value; } } - private string mvarTitle = String.Empty; - public string Title { get { return mvarTitle; } set { mvarTitle = value; } } + private string mvarTitle = String.Empty; + public string Title { get { return mvarTitle; } set { mvarTitle = value; } } - private MenuItem.MenuItemCollection mvarItems = new MenuItem.MenuItemCollection(); - public MenuItem.MenuItemCollection Items { get { return mvarItems; } } + private MenuItem.MenuItemCollection mvarItems = new MenuItem.MenuItemCollection(); + public MenuItem.MenuItemCollection Items { get { return mvarItems; } } - private bool mvarVisible = true; - public bool Visible { get { return mvarVisible; } set { mvarVisible = value; } } - } + private bool mvarVisible = true; + public bool Visible { get { return mvarVisible; } set { mvarVisible = value; } } + } } diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Toolbox.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Toolbox.cs index c0f3c271..49719a5c 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Toolbox.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Toolbox.cs @@ -24,32 +24,32 @@ namespace UniversalEditor.UserInterface public sealed class ToolboxItemCollection : System.Collections.ObjectModel.Collection { - public ToolboxCommandItem AddCommand(string name) - { - return AddCommand(name, name); - } - public ToolboxCommandItem AddCommand(string name, string title) - { - return AddCommand(name, title, null); - } - public ToolboxCommandItem AddCommand(string name, string title, string imageFileName) - { - ToolboxCommandItem item = new ToolboxCommandItem(name, title, imageFileName); - Add(item); - return item; - } + public ToolboxCommandItem AddCommand(string name) + { + return AddCommand(name, name); + } + public ToolboxCommandItem AddCommand(string name, string title) + { + return AddCommand(name, title, null); + } + public ToolboxCommandItem AddCommand(string name, string title, string imageFileName) + { + ToolboxCommandItem item = new ToolboxCommandItem(name, title, imageFileName); + Add(item); + return item; + } - public ToolboxGroupItem AddGroup(string name) - { - return AddGroup(name, name); - } - public ToolboxGroupItem AddGroup(string name, string title) - { - ToolboxGroupItem group = new ToolboxGroupItem(name, title); - Add(group); - return group; - } - } + public ToolboxGroupItem AddGroup(string name) + { + return AddGroup(name, name); + } + public ToolboxGroupItem AddGroup(string name, string title) + { + ToolboxGroupItem group = new ToolboxGroupItem(name, title); + Add(group); + return group; + } + } private string mvarName = String.Empty; public string Name { get { return mvarName; } set { mvarName = value; } } @@ -67,8 +67,8 @@ namespace UniversalEditor.UserInterface private string mvarTitle = String.Empty; public string Title { get { return mvarTitle; } set { mvarTitle = value; } } - private ToolboxItem.ToolboxItemCollection mvarItems = new ToolboxItem.ToolboxItemCollection(); - public ToolboxItem.ToolboxItemCollection Items { get { return mvarItems; } } + private ToolboxItem.ToolboxItemCollection mvarItems = new ToolboxItem.ToolboxItemCollection(); + public ToolboxItem.ToolboxItemCollection Items { get { return mvarItems; } } public ToolboxGroupItem(string name, string title) : base(name) { From 8864e6971669178308c57018b2d1eb63547075d5 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 08:58:19 -0400 Subject: [PATCH 04/16] Modifiers should be flags, and CommandShortcutKey should be implemented ;) --- .../CommandShortcutKey.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs b/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs index ba88de28..24812565 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs @@ -5,13 +5,15 @@ using System.Text; namespace UniversalEditor.UserInterface { + [Flags()] public enum CommandShortcutKeyModifiers { None = 0, Control = 1, Shift = 2, Alt = 4, - Meta = 8 + Meta = 8, + Super = 16 } public enum CommandShortcutKeyValue { @@ -66,5 +68,14 @@ namespace UniversalEditor.UserInterface { private CommandShortcutKeyModifiers mvarModifiers = CommandShortcutKeyModifiers.None; public CommandShortcutKeyModifiers Modifiers { get { return mvarModifiers; } set { mvarModifiers = value; } } + + private CommandShortcutKeyValue mvarValue = CommandShortcutKeyValue.None; + public CommandShortcutKeyValue Value { get { return mvarValue; } set { mvarValue = value; } } + + public CommandShortcutKey(CommandShortcutKeyValue value, CommandShortcutKeyModifiers modifiers = CommandShortcutKeyModifiers.None) + { + mvarValue = value; + mvarModifiers = modifiers; + } } } From 983f5b1cf509eddd15a398e340bb038adc31d713 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 08:59:32 -0400 Subject: [PATCH 05/16] Should a KeyValue even have a None? --- .../UniversalEditor.UserInterface/CommandShortcutKey.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs b/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs index 24812565..5dc64fca 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs @@ -17,6 +17,7 @@ namespace UniversalEditor.UserInterface } public enum CommandShortcutKeyValue { + None = 0, TopRow0, TopRow1, TopRow2, From ade48ccffef86a718e6a84ce4056e80f85433c46 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 09:00:07 -0400 Subject: [PATCH 06/16] We have to be able to assign the command shortcut key... --- CSharp/Libraries/UniversalEditor.UserInterface/Command.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs index 9a9a8eb4..1c4aaafb 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Command.cs @@ -45,7 +45,7 @@ namespace UniversalEditor.UserInterface public string DefaultCommandID { get { return mvarDefaultCommandID; } set { mvarDefaultCommandID = value; } } private CommandShortcutKey mvarShortcutKey = new CommandShortcutKey(); - public CommandShortcutKey ShortcutKey { get { return mvarShortcutKey; } } + public CommandShortcutKey ShortcutKey { get { return mvarShortcutKey; } set { mvarShortcutKey = value; } } private StockCommandType mvarStockCommandType = StockCommandType.None; /// From fdf04e5426d0e6892e4b9be99f975a4107614019 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 10:50:29 -0400 Subject: [PATCH 07/16] Finish implementing ShortcutKeys for CommandBars --- .../MainWindow.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs b/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs index 468abde9..69616ebd 100644 --- a/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs +++ b/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs @@ -140,6 +140,7 @@ namespace UniversalEditor.UserInterface.WindowsForms else { ToolStripMenuItem tsmi = new ToolStripMenuItem(); + tsmi.ShortcutKeys = ShortcutKeyToWinFormsKeys(cmd.ShortcutKey); tsi = tsmi; } @@ -167,6 +168,7 @@ namespace UniversalEditor.UserInterface.WindowsForms else { tsi = new ToolStripMenuItem(); + (tsi as ToolStripMenuItem).ShortcutKeys = ShortcutKeyToWinFormsKeys(cmd.ShortcutKey); } tsi.Tag = cmd; tsi.Text = cmd.Title.Replace("_", "&"); @@ -177,6 +179,18 @@ namespace UniversalEditor.UserInterface.WindowsForms return null; } + private Keys ShortcutKeyToWinFormsKeys(CommandShortcutKey sk) + { + Keys keys = Keys.None; + if ((sk.Modifiers & CommandShortcutKeyModifiers.Alt) == CommandShortcutKeyModifiers.Alt) keys |= Keys.Alt; + if ((sk.Modifiers & CommandShortcutKeyModifiers.Control) == CommandShortcutKeyModifiers.Control) keys |= Keys.Control; + if ((sk.Modifiers & CommandShortcutKeyModifiers.Meta) == CommandShortcutKeyModifiers.Meta) keys |= Keys.Alt; + if ((sk.Modifiers & CommandShortcutKeyModifiers.Shift) == CommandShortcutKeyModifiers.Shift) keys |= Keys.Shift; + if ((sk.Modifiers & CommandShortcutKeyModifiers.Super) == CommandShortcutKeyModifiers.Super) keys |= Keys.LWin; + keys |= (Keys)sk.Value; + return keys; + } + private void LoadCommandBarItem(CommandItem item, ToolStripDropDownItem parent) { ToolStripItem tsi = InitializeCommandBarItem(item, true); From d1c7021691062cf2c06acc2b2a9c898440b9164c Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 10:50:55 -0400 Subject: [PATCH 08/16] Additional CommandShortcutKeyValue definitions to support additional keys --- .../CommandShortcutKey.cs | 101 +++++++++++++++++- 1 file changed, 97 insertions(+), 4 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs b/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs index 5dc64fca..b8b86ad6 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/CommandShortcutKey.cs @@ -18,7 +18,81 @@ namespace UniversalEditor.UserInterface public enum CommandShortcutKeyValue { None = 0, - TopRow0, + + // + // Summary: + // The SPACEBAR key. + Space = 32, + // + // Summary: + // The PAGE UP key. + Prior = 33, + // + // Summary: + // The PAGE UP key. + PageUp = 33, + // + // Summary: + // The PAGE DOWN key. + Next = 34, + // + // Summary: + // The PAGE DOWN key. + PageDown = 34, + // + // Summary: + // The END key. + End = 35, + // + // Summary: + // The HOME key. + Home = 36, + // + // Summary: + // The LEFT ARROW key. + Left = 37, + // + // Summary: + // The UP ARROW key. + Up = 38, + // + // Summary: + // The RIGHT ARROW key. + Right = 39, + // + // Summary: + // The DOWN ARROW key. + Down = 40, + // + // Summary: + // The SELECT key. + Select = 41, + // + // Summary: + // The PRINT key. + Print = 42, + // + // Summary: + // The EXECUTE key. + Execute = 43, + // + // Summary: + // The PRINT SCREEN key. + PrintScreen = 44, + // + // Summary: + // The INS key. + Insert = 45, + // + // Summary: + // The DEL key. + Delete = 46, + // + // Summary: + // The HELP key. + Help = 47, + + TopRow0 = 48, TopRow1, TopRow2, TopRow3, @@ -28,7 +102,8 @@ namespace UniversalEditor.UserInterface TopRow7, TopRow8, TopRow9, - A, + + A = 65, B, C, D, @@ -54,7 +129,8 @@ namespace UniversalEditor.UserInterface X, Y, Z, - NumPad0, + + NumPad0 = 96, NumPad1, NumPad2, NumPad3, @@ -63,7 +139,20 @@ namespace UniversalEditor.UserInterface NumPad6, NumPad7, NumPad8, - NumPad9 + NumPad9, + + F1 = 112, + F2, + F3, + F4, + F5, + F6, + F7, + F8, + F9, + F10, + F11, + F12 } public class CommandShortcutKey { @@ -73,6 +162,10 @@ namespace UniversalEditor.UserInterface private CommandShortcutKeyValue mvarValue = CommandShortcutKeyValue.None; public CommandShortcutKeyValue Value { get { return mvarValue; } set { mvarValue = value; } } + public CommandShortcutKey() + : this(CommandShortcutKeyValue.None, CommandShortcutKeyModifiers.None) + { + } public CommandShortcutKey(CommandShortcutKeyValue value, CommandShortcutKeyModifiers modifiers = CommandShortcutKeyModifiers.None) { mvarValue = value; From bfcc77c54d400449c24fac2d8d8c6efbb936318c Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 10:51:13 -0400 Subject: [PATCH 09/16] Finish implementing ShortcutKeys for CommandBars --- .../UniversalEditor.UserInterface/Engine.cs | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs index 117a738d..a0c2d459 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs @@ -416,6 +416,57 @@ namespace UniversalEditor.UserInterface { cmd.Title = cmd.ID; } + + MarkupTagElement tagShortcut = (tagCommand.Elements["Shortcut"] as MarkupTagElement); + if (tagShortcut != null) + { + MarkupAttribute attModifiers = tagShortcut.Attributes["Modifiers"]; + MarkupAttribute attKey = tagShortcut.Attributes["Key"]; + if (attKey != null) + { + CommandShortcutKeyModifiers modifiers = CommandShortcutKeyModifiers.None; + if (attModifiers != null) + { + string[] strModifiers = attModifiers.Value.Split(new char[] { ',' }); + foreach (string strModifier in strModifiers) + { + switch (strModifier.Trim().ToLower()) + { + case "alt": + { + modifiers |= CommandShortcutKeyModifiers.Alt; + break; + } + case "control": + { + modifiers |= CommandShortcutKeyModifiers.Control; + break; + } + case "meta": + { + modifiers |= CommandShortcutKeyModifiers.Meta; + break; + } + case "shift": + { + modifiers |= CommandShortcutKeyModifiers.Shift; + break; + } + case "super": + { + modifiers |= CommandShortcutKeyModifiers.Super; + break; + } + } + } + } + + CommandShortcutKeyValue value = CommandShortcutKeyValue.None; + value = (CommandShortcutKeyValue)Enum.Parse(typeof(CommandShortcutKeyValue), attKey.Value); + + cmd.ShortcutKey = new CommandShortcutKey(value, modifiers); + } + } MarkupTagElement tagItems = (tagCommand.Elements["Items"] as MarkupTagElement); if (tagItems != null) @@ -429,7 +480,7 @@ namespace UniversalEditor.UserInterface } } - mvarCommands.Add (cmd); + mvarCommands.Add(cmd); } } From a69d9fffdcc423729c50ab264eff07e3f0c3e1b7 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:19:39 -0400 Subject: [PATCH 10/16] Added platform-independent content project --- .../Branding/MainIcon.ico | Bin 0 -> 77123 bytes .../Branding/SplashScreen.png | Bin 0 -> 4774 bytes .../Configuration/Application.upl | Bin 0 -> 68 bytes .../Configuration/CommandBars.xml | 24 ++ .../Configuration/Commands.xml | 263 ++++++++++++++++++ .../Configuration/MainMenu.xml | 16 ++ .../Configuration/SplashScreen.upl | Bin 0 -> 47 bytes .../Images/Commands/mnuDebugBreak.png | Bin 0 -> 314 bytes .../Images/Commands/mnuDebugStart.png | Bin 0 -> 370 bytes .../Images/Commands/mnuDebugStop.png | Bin 0 -> 412 bytes .../ImageList/16x16/IcarusCommandAffect.png | Bin 0 -> 262 bytes .../ImageList/16x16/IcarusCommandCamera.png | Bin 0 -> 265 bytes .../16x16/IcarusCommandControlFlowDo.png | Bin 0 -> 223 bytes .../16x16/IcarusCommandControlFlowDoWait.png | Bin 0 -> 225 bytes .../16x16/IcarusCommandControlFlowWait.png | Bin 0 -> 223 bytes .../ImageList/16x16/IcarusCommandDeclare.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandElse.png | Bin 0 -> 226 bytes .../ImageList/16x16/IcarusCommandFlush.png | Bin 0 -> 240 bytes .../ImageList/16x16/IcarusCommandFree.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandIf.png | Bin 0 -> 226 bytes .../ImageList/16x16/IcarusCommandKill.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandLoop.png | Bin 0 -> 266 bytes .../ImageList/16x16/IcarusCommandMove.png | Bin 0 -> 256 bytes .../ImageList/16x16/IcarusCommandPlay.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandPrint.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandRem.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandRemove.png | Bin 0 -> 279 bytes .../ImageList/16x16/IcarusCommandRotate.png | Bin 0 -> 302 bytes .../ImageList/16x16/IcarusCommandRun.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandSet.png | Bin 0 -> 218 bytes .../ImageList/16x16/IcarusCommandSignal.png | Bin 0 -> 249 bytes .../ImageList/16x16/IcarusCommandSound.png | Bin 0 -> 242 bytes .../ImageList/16x16/IcarusCommandTask.png | Bin 0 -> 262 bytes .../ImageList/16x16/IcarusCommandTemplate.png | Bin 0 -> 211 bytes .../ImageList/16x16/IcarusCommandUse.png | Bin 0 -> 309 bytes .../ImageList/16x16/IcarusCommandWait.png | Bin 0 -> 256 bytes .../16x16/IcarusCommandWaitSignal.png | Bin 0 -> 234 bytes .../Images/Attribute.png | Bin 0 -> 189 bytes .../Images/Comment.png | Bin 0 -> 214 bytes .../Images/Entity.png | Bin 0 -> 528 bytes .../Images/Preprocessor.png | Bin 0 -> 386 bytes .../Images/Tag.png | Bin 0 -> 316 bytes .../Images/ImageList/16x16/Message.png | Bin 0 -> 643 bytes .../Images/ImageList/16x16/Service.png | Bin 0 -> 837 bytes .../Images/ImageList/32x32/Message.png | Bin 0 -> 741 bytes .../Images/ImageList/32x32/Service.png | Bin 0 -> 976 bytes .../Languages/English.xml | 104 +++++++ .../Languages/Japanese.xml | 105 +++++++ ...{A0786B88-2ADB-4C21-ABE8-AA2D79766269}.xml | 11 + ...{D3A89FE2-7C08-433B-8165-F484A073588B}.xml | 11 + .../Projects/PHPProject1/PHPProject1.uesln | 11 + .../PHPProject1/PHPProject1.ueproj | 25 ++ .../Projects/SFX1/SFX1.xml | 9 + .../Properties/AssemblyInfo.cs | 36 +++ .../Templates/Database/AssetsDatabase.xml | 18 ++ .../Templates/Database/ContactsDatabase.xml | 18 ++ .../Templates/Database/EventsDatabase.xml | 18 ++ .../Templates/Database/FacultyDatabase.xml | 18 ++ .../Templates/Database/IssuesDatabase.xml | 18 ++ .../Database/MarketingProjectsDatabase.xml | 18 ++ .../Templates/Database/NorthwindDatabase.xml | 18 ++ .../Templates/Database/ProjectsDatabase.xml | 18 ++ .../Database/SalesPipelineDatabase.xml | 18 ++ .../Templates/Database/StudentsDatabase.xml | 18 ++ .../Templates/Database/TasksDatabase.xml | 18 ++ .../Templates/Database/database.ico | Bin 0 -> 169086 bytes .../FileSystem/WindowsFileSystem.xml | 63 +++++ .../Templates/FileSystem/windows_16x16.png | Bin 0 -> 939 bytes .../Templates/FileSystem/windows_32x32.png | Bin 0 -> 2622 bytes .../Templates/Form/Asset Tracking.xml | 62 +++++ .../Templates/Form/Expense Report.xml | 62 +++++ .../Templates/Form/Meeting Agenda.xml | 62 +++++ .../Templates/Form/Status Report.xml | 62 +++++ .../Templates/Form/Travel Request.xml | 14 + .../Templates/Form/icon_16x16.png | Bin 0 -> 846 bytes .../Templates/Form/icon_32x32.png | Bin 0 -> 2082 bytes .../Templates/Form/icon_48x48.png | Bin 0 -> 3637 bytes .../Websites/PHP/PHP Web Project.xml | 27 ++ .../Templates/Web/HTMLPage.ico | Bin 0 -> 4150 bytes .../Templates/Web/HTMLPage.xml | 34 +++ .../Templates/Web/MasterPage.ico | Bin 0 -> 3618 bytes .../Templates/Web/MasterPage.xml | 48 ++++ .../Templates/Web/TravelRequest.xsn | Bin 0 -> 15855 bytes .../Templates/Web/WebForm.ico | Bin 0 -> 4150 bytes .../Templates/Web/WebForm.xml | 49 ++++ .../Templates/Web/WebService.ico | Bin 0 -> 4150 bytes .../Templates/Web/WebService.xml | 68 +++++ .../Templates/Web/WebUserControl.ico | Bin 0 -> 3638 bytes .../Templates/Web/WebUserControl.xml | 35 +++ ...lEditor.Content.PlatformIndependent.csproj | 146 ++++++++++ CSharp/UniversalEditor.WindowsForms.sln | 175 ++++++++++++ 91 files changed, 1720 insertions(+) create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Branding/MainIcon.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Branding/SplashScreen.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Application.upl create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/CommandBars.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/MainMenu.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/SplashScreen.upl create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugBreak.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugStart.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugStop.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandAffect.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandCamera.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowDo.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowDoWait.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowWait.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandDeclare.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandElse.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandFlush.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandFree.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandIf.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandKill.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandLoop.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandMove.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandPlay.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandPrint.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandRem.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandRemove.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandRotate.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandRun.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSet.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSignal.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSound.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandTask.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandTemplate.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandUse.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandWait.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandWaitSignal.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Attribute.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Comment.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Entity.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Preprocessor.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Tag.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/16x16/Message.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/16x16/Service.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/32x32/Message.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/32x32/Service.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Languages/English.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Languages/Japanese.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{A0786B88-2ADB-4C21-ABE8-AA2D79766269}.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{D3A89FE2-7C08-433B-8165-F484A073588B}.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Properties/AssemblyInfo.cs create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/AssetsDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ContactsDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/EventsDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/FacultyDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/IssuesDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/MarketingProjectsDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/NorthwindDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ProjectsDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/SalesPipelineDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/StudentsDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/TasksDatabase.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/database.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/WindowsFileSystem.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/windows_16x16.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/windows_32x32.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Asset Tracking.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Expense Report.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Meeting Agenda.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Status Report.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Travel Request.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_16x16.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_32x32.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_48x48.png create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Software Development/Websites/PHP/PHP Web Project.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/TravelRequest.xsn create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebForm.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebForm.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.ico create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.xml create mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Branding/MainIcon.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Branding/MainIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cae06de020d39a6e8357638f5da457bf2e1ef09c GIT binary patch literal 77123 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 BrA7b% literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Branding/SplashScreen.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Branding/SplashScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..a82b6b38126cc8268eff45c4737d02bd2cbb6dfc GIT binary patch literal 4774 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 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Application.upl b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Application.upl new file mode 100644 index 0000000000000000000000000000000000000000..1e09ee881768bbdd3093f03724fe6c93a9760d9a GIT binary patch literal 68 zcmWFy@Nr{cXs~x-fC5G!?O0HdlbM`Yl9`{!0OErHe@JFYPAY?QeqM5FQAtsLW{RRh La7k%OW + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.xml new file mode 100644 index 00000000..af234d6f --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/Commands.xml @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/MainMenu.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/MainMenu.xml new file mode 100644 index 00000000..5275d841 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/MainMenu.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/SplashScreen.upl b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Configuration/SplashScreen.upl new file mode 100644 index 0000000000000000000000000000000000000000..9d7f75525ee42818dba95d64f3ad69ad25905483 GIT binary patch literal 47 wcmWFy@Nr{cXt39300Kr30R;TP1v!bu8Nta#si}Fcd5K9msVNL4MWv|>0NiK`YybcN literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugBreak.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugBreak.png new file mode 100644 index 0000000000000000000000000000000000000000..abf9e61a1579fc14f8648709e25d3ed8000571f3 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)n-DJpXPUwjA)t_KW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6rbnm;uvCa`t1cnK1W9Zwg>-n=lMNid-p)bt9(J&4%R|W z^8n8;GOTlLQqszgWw~t3Pl?n1Sbjg{`}vfH`Tn7NVbNz-b)Ej%a&$?2E?;y1^v#K{ zYc<$cb$!%G*ls_ojN65EuT}F5pWUpQnh^|YMsM>cuzY8Cc+bDoI%mR#55hhzopr E0Iu_grT_o{ literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugStop.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/Commands/mnuDebugStop.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3c06eaae2f17e25f4f8d9de696bc162cd8a896 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)n-DL9*lUfK&w)a+nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^0|O(2r;B5V#p$;bPWv)D3b3AD9eYTD{gHyeB*so{76+yd z4v*IEiF^0|{N}U0eYLLg?;e-C_ZE6DZL>fBtion*w6XD(DN(#@z1E7FI)}d8eeCh! zwFrw+xpI?Px1xf+IZFLEJ8{(xE&C}`~&UAd9rt@>t zf-vWjgm3KEF3hM&aSX9IeRpyoUxNXMbM*WA6-AqVE%a7<6*EQuXSUOQ zt`vvVn{6u0AJlknXGBdZujM~+HvEF7gYk0_$qhBKyTt?q>x`br&AXn^$DnfeHy@`; wzopr03_;G`2YX_ literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandCamera.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandCamera.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa00737774ac22d9a5c14e34171a6fb13314b16 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix>|xcX)EeU!ag|W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6wmc^aSX9IeROgl7lR^)%kg*h8rC;&&%cwkF*d_qh{dzk zn8S1V;YAJ~EPZF2CmKy&vPsdBbE^I6YQA$!FWm2!e`uJp^5Ukdz4KRJzgJzTKlpG5!&bhgy-InzOh7L3boFyt=akR{04APS A0ssI2 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowDo.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowDo.png new file mode 100644 index 0000000000000000000000000000000000000000..9a897e3830372a7efd3c99e1ab2e12f8adb464d0 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix>}!y4J6zn?NDi%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dB<|_r7-DfcIbnf-fzrnRlNa~1I_rIjX!n6$u zp%MMAYXo=C^qJCja0TNNsSouLt&HEM-0)CPHV85_4&-6jev*B$A;;eBAbUJr{an^L HB{Ts54?;qG literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowDoWait.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandControlFlowDoWait.png new file mode 100644 index 0000000000000000000000000000000000000000..31e4f7ef68b59e42474f8ee65f61197bb0063a97 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!3HFMCO(@Aq}Y|gW!U_%O?XxI14-? zi-9VIL70(Y)*K0-AbW|YuPggq7BL=HaZ!tA6QGc6W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6nFJ>aSYKopPZ7A@Z-FLN}!&R&h^K%kIpW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J68Cg*46!(!oUlN^KxyOu$&340W0x`ZuVdTc`(ILGVcLd- z;D~T*3H6>O*}*E912(H#{_y4T21f19=#Bd9g2MJHG5D$R1BuKbLh* G2~7Z%&Ox34 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandDeclare.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandDeclare.png new file mode 100644 index 0000000000000000000000000000000000000000..a79a3934b4ac3de6637a4ac8ec66c1d1c9b3def5 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{`1>gwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{Jr+)J(JL(7B@WwMKum~rL}tvJ}@vGYZX@F)LOL&WR<6@ KpUXO@geCx^4nXAq literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandFlush.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandFlush.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2d1b675d9be32e81ce623b801d83bcbbaa9e89 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{^VTi==sKzRn)%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dC?4YJ;uvCa`fZS*&;bJurhos_t-enBwrEr7%GpehRvx&1 z(AMz5)EWM2wbxIuYHnVr?XmHPZQzvzf$zLbh5L`h9r?`Ce7kdTr$J(uz1lvf($9gwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{Jr+)J(JL(7B@WwMKum~rL}tvJ}@vGYZX@F)LOL&WR<6@ KpUXO@geCx^4nXAq literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandKill.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandKill.png new file mode 100644 index 0000000000000000000000000000000000000000..a79a3934b4ac3de6637a4ac8ec66c1d1c9b3def5 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{`1>gwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{JrXVbhk^KHA=vithB!|BACJoYjX)vU%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dD4yc!;uvCa`e<-8*8u|#?&7kvwqh)!R-uKB6I3coXV zP7{N|3)Pt!&!1#Wm~h2+-Zt57C5bZUg94c+PAi=?H+ktL8DVX6`;IBB$Bc8@YqT#$ q$35QlUU7DUn;)mk6aRmQ{#!6uuauR)vqb+i$RVDtelF{r5}E+)nNrRG literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandPlay.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandPlay.png new file mode 100644 index 0000000000000000000000000000000000000000..a79a3934b4ac3de6637a4ac8ec66c1d1c9b3def5 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{`1>gwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{JrgwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{JrgwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{Jr}+63?lN7l1;tnIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P`ujH#WBR<^wmj$d!|TEehZWo69y#G4EZXBN~>US*ywaq7Xe1WvJ?tLF3Ei7j3(I;He5N9jFV zorAx2oewDceC~r^_`Cznj4!7bylKz-*;8JypS${{d`pI%+RN?bA0JyV2wqD5d+B{f PAIN>4u6{1-oD!M}smVvr;0#HacGbEzKIX^cyHLnE7WngeFN=+cV_8QIs69B_!#^gmNuAZdwMoa=z69yDLi1)T?J7E z_IC=Z3F|(wNHT;Lu|_h5owWVI8BqH7vfQ3e)+ZdY`4}?JI>vRE-15HJ`{uRn4d0X> m*BB$#742*OB=gwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{Jr}+!T;g~Gk`*}nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P~6Vb#WBRHQp00i_>zopr0K~*V A2><{9 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSignal.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSignal.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef94ff202dccd231150b02c22bcbe615ca137d4 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{`H&V!xlFMvX_nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P(0St#WBR<^wCMT`5F{>oWmdg|NrS@=0ri2SxGm9uU|5j zN}N{2V6uAA9Hyz>yOy`VelX`xdo&Nv5CA kbGhahZ7}NGcHrMG2E8Uxp(8>boFyt=akR{0HX_2`Tzg` literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSound.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandSound.png new file mode 100644 index 0000000000000000000000000000000000000000..ef38926ab931039f7a4b4f335bd92b81fc752a37 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{`Hb#m4teV~wRW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6c6)saSX9IeRk48z5@z8PMRP8*GuYKcP%PD=~0#aa4bB<(x bRR0$y>!K(q%kVpJ3CLaSX9IeRpyoUxNXMbM*WA6-AqVE%a7<6*EQuXSUOQ zt`vvVn{6u0AJlknXGBdZujM~+HvEF7gYk0_$qhBKyTt?q>x`br&AXn^$DnfeHy@`; wzopr03_;G`2YX_ literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandTemplate.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..e68c90371635137f9d7350fff5808677b8f71388 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix>~9NRQ#AKA@0nW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6gT&DaSX9Iotz+%aiHVO&+`X9$RGUKKOs5gPyZ4|SAOBJ vgwRV=YT@8nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P<*DRi(`nz>9vys`3@`aIL9x$$GvXb?AFPZ^1`A^TD+ol zpDGK89OwI>qVn)vu-?lvcWX~Et`TS2a*ZV*TT;%H!Anz2de+S=kqV7Z-kmykOk(BI z*4@?(;Y&nUu3OP>@#sw23%{Jr z$iBetd3qYxe4*!+JsUJU9Um$DnA6F|sGhzI r>WfZ+p`u$#SFMV&+Eu&#(@%B3iLGW54pANdKo0SA^>bP0l+XkKIZ;*C literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandWaitSignal.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Icarus.IcarusScriptEditor/Images/ImageList/16x16/IcarusCommandWaitSignal.png new file mode 100644 index 0000000000000000000000000000000000000000..acabd03db06bc5c6c816df7b74f5dd8adfeeb8fb GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)ix{`H%&~-U7od=AW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6!-IVaSX9I{Wjn<7lQ&%(Zm1$H^pjotk5mv`n09pO6`Nq z8gZr)MJX#kX;zyv%ccolddU#`=-irxDb7ny7ZfGF_&%XA<*du;Hv&ag%}xDWZ>I1o T?vR-K31p?GtDnm{r-UW|Pq#{5 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Attribute.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Attribute.png new file mode 100644 index 0000000000000000000000000000000000000000..913bfaafad6d1f045146d74ef73d016e246fa800 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)i-dqWe+X+qDo{u^GbEzKIX^cyHLnE7WngeFN=+o7?DrZ2(d%F6$taD0e0s!)qJp2Fv literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Entity.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Entity.png new file mode 100644 index 0000000000000000000000000000000000000000..3d673c259e713f841ee23a9cf27e7c2f1af32b3e GIT binary patch literal 528 zcmV+r0`L8aP)WFU8GbZ8()Nlj2>E@cM*00DGKL_t(I%f*wwOWQ#h z#y{^R+Nebc4mt$?g?1@8=+aHFoh&FgbSMOuT7%F*8qYu|)JaPQ1^)oMxL8_Cr)KFt z(50iGPy|IIP0-|?4&OvHKQM#P8(xm*xX*jf^K$UNm$ehKRHq#7o#2r{Sx^*VBS-xE zod8emg|HpN+MKm&u2~Sa7F`ZY70!|u{22(;o(UDZvamv^8Ww|-LC;X>t_)lo;^%0W z^xcH$ZhQRIBRH<3GM-TIcHxF-9kT?)JT*akYULZ#D zU{4LDJ#I0eS)nV#(vaPP-m!Ye-A)$f04kKe0OW{$65%=MFW4(#A3^6=RNi+2B%<!TiNt1=^5SJ;B_VAzx zHrkrCeu9lf5UsD`-n3ZA({})+$Dj|O-=IsOQ=tO<7>6(ex-e|P6Y}@=8~*_WJbWu# S$R)S{0000QY)Uzk52=;6R%wBIiL0-#5t;;1RohL3gIhcRq=)}X; zhrTo2x;J4-Skp2Cv4=Tx1$QvpovvBdG{L*!N3-YE*~^+Xs5!juePhs*&9A$7lNfvT Zb$M@_2nBD*Y literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Tag.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.MarkupEditor/Images/Tag.png new file mode 100644 index 0000000000000000000000000000000000000000..7b21ac675a22b7ab4765f7b959bf5da7ee1083c7 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)i-drh9%Ff66;MbvGbEzKIX^cyHLnE7WngeFN=+eP1lp&GNs;t4x_Ji^Tu_p>{tKD`gwy3VC za^hOR+!D#8W&9!d!o4>62a<=RV(x7Soi2W&vFw3*n)2E@U;TTl*Pc4_XXTF#0ge${ zH+&FF%DWKW;p*FQ(zs8z-!I+AZVBs)FUj^#*p8~kZ_^8NtOj|))78&qol`;+0AMz1 AX8-^I literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/16x16/Message.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/16x16/Message.png new file mode 100644 index 0000000000000000000000000000000000000000..0e94ffdbcb73b274ddf43c9ce7b19451275784e2 GIT binary patch literal 643 zcmV-}0(||6P)WFU8GbZ8()Nlj2>E@cM*00HMoL_t(I%dL}5PZLoT zhM!wnCPG^av?dc#5Q8QrlHdYtbSJ_14_y08+_-b;-WdOatu)cZ01FI;VkD@GCZ=@w zD4iMT*L>ZXadE5Bb-A09+?+h;ecyAh0Epul02%bKj`y&eHEi>Uj@6>y?Gc8O)TqW- zW`bN^C$HZ|pIJn^ltp~0JdXi{l*m{pP!!_J0W?&VFd}j#0D*|`0(GBY$de3w7Xa(m zTZ${I08A7LAW{HCz5{^MYhgD}0NCID#>>}AP15(3?1kkAY?dnk6rVh1vM>dJ@2LUZ z(=)1@I{=JmSvv0d1zB(cAAsq(TOG61A=Y1Y?10ASiG?UVKhsf?$#;JNsIbU_we6*9JIvsEgqK#R-V%Z&rzwk-gR z1A|hz4uD=r;11rz@Cu|C0PywGM{;v_)ie|8bprse(^b`Vn7^R`u)W_${sDNA3h7NL zMub1r&Yc*m7Xr}kr~%!sN5@gUjvxP3Fti2n?{BPDUQqkKOFpkrxHiqCex0#I3wgT3 zd1H^}aT~)*(=eyFvv{A?XRrPT02n{sb5Psm$T+0cv^XlsYCz(002ovPDHLkV1mfB6r=zE literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/16x16/Service.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/16x16/Service.png new file mode 100644 index 0000000000000000000000000000000000000000..1abfe1af19e6f181ea03bac5f732082fef3ed3ae GIT binary patch literal 837 zcmV-L1G@Z)P)WFU8GbZ8()Nlj2>E@cM*00OB=L_t(I%Z-vvNK|_m z#()3QnQ_c!#>}J-5h)o9$|8bl(KQz(f#Gcxt%_(_tDvN5Q&dQc76ol;k(DjFQFgC) ztf*G$bSaF~8Y)d4(`oY9%y`axALqRbX_ZPZyqg!^hab=LC=uaz=2C0FM4~bNY_6ex z*DCe%t}pcTd9C`Fo! z(xoM&l4(riD`uvEv&2ozm_#KFWIGit%4*qjGyAscDO$-XJ|UPOG`h*5k%FcHToaU%>blrhbc0g@z*H(43fNo_NB< zRbD-BSJaf5mOwB>&sYw$96vtvq7~^#MJ-zCGK@FRXgSnG!}-SRG`Q{?rK z$p|=#F-6Bp#IXyC(O`hGnK=Jmzc8nOwr%q|qLFV*d>P?oM?0qILl&<03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00K!#L_t(o!|j(%YZFlv zhM(zI&^9&ILDGhxO3@V#J^zD1{6fQs8o!iR9yrlP5O~0 zlQv&7nXkAwgLne2JB!@SaGx1w?tSOH=bUR0j()$-zr%Ao0GRvV0cccBb@LsKINaNts9=~#OoVck-!JQ z@dlLg^&CF{Ah11!T|;=!)z6=}0>cH2xsI)X`TG?BnUz(=XHuy!NX8Wp981luPAzoJ zf#Ta+-vD^_!i$&!j-#V}Vfiiq8@asVnTHPmIGZ}BxYN@Lwhxa0C~SOId^9G$Z`sGg zAdFZHSgxbM?EH1PF|f3cuh#)sx_?in(!P%B!iP-&E?+&b_- zcwEt`#1sJU*WV~!Z|K~9&>WSw#Cy6Hgl=)1U>JlEive4wavJpp0GrvI&XAd90B$EH z6}OwFnpbuz0AzC|#nUO-t8IJ3Ul6%G;41L--COBq=WpqMTbFC8R8hRwYU_CzRM)P= z6yMtJN)H)11$u$bWG}NaH~e3^&RfFGj<0yLr4?+qB?GoB{a(xI4}&n83o!n7HZ0_y z0#N+%Mb36fiR#qFS?LYam*fmMB3-a|C_UhDS;h1$N)0#)YlrWO8zy7o^fS|AQUfl`Nr$wsBKcwIk$l)NqM^Va X8DHcUM>Yrz00000NkvXXu0mjf?Bzqe literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/32x32/Service.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Editors/UniversalEditor.Editors.Web.WebService.Description.WebServiceDescriptionEditor/Images/ImageList/32x32/Service.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3dd09125199ca11ba8c29ab62cde05dbade68c GIT binary patch literal 976 zcmV;>126oEP)WFU8GbZ8()Nlj2>E@cM*00T5hL_t(o!`0PGY)oMo z#_|6do#|BRR8?IfBGI%Yg3v@aQcWZX!NO%hqLD7xOEg9zgt#m$L}Gyj5gUmFRVr#l zi%6?Vt8`pSF-$u%J=0DvI-kY!+1Y3$ojIG6b8_a)dEf7Of1hKF;eQ^dPqrC=Z{a8a zTQ(O1P_cTB^S9?cOz@F4-XGTAPZ@xo?gRjPs`DIxET3LkR5%-ekD+$}__9U~z{7@a z02VKqmmVE(#+!ko$GQwauGbI1l>A%(h6a-W#N96d47e!(yuPUbM590T$4(@}JJ8me zGyu12djN2g{Q$H)Z2+Jzu1Z&wZ34jW&jH}ehsOZys#>3+9XN96tpS)?s5SL?ya3#- zy#m0Y;6?!Q0;>36@G<~%=dA@`FrlgW5NgU$2YO>#^W?8Q07izD@}CjS_o|8#2jFeT zHv{1J`ZNvkQDr0M0x;P>KSMHb@|J85M`iowGTHvMB@Dom#t{I1d326PngKAA)LfG) zRi(b^07SwM0H~?im}VWQ@0RVKe<-EZWwQOuy$%DA98*QJhQ9((TC6o}c&W8tQX<=% zuIqjM2|b@k#MGftZHAvd)d5gg5KFTT9K9#ovpupsf0}F`9FXm9M7Fy_O1&@F+8(jC z56Jeh&T;_4VTt#;?KS{`z+CN;MU?=Ql)g{14z%{j_S%=4^Mtki`2*P=|6}_aYkQ8Q z`}jHhQK=4MV0VtSZZO@YJb=PEj zuuAh9n4*eF-?Zcx=dE~q1yJER)?+D3u zuSd4Ku56FRWxKy{{aj``7@qMpa>UKv@_Xvb&^L>35B_J#KAJS=*ard%>9Q-??x+!=_;6vV{QL zzxGHsdiwxqf2QlDTldQLR}$~lLu>m?Yx`1bd+L3LPQjnO;K_?O2B0OX>wT3<^Sb@# y3_w?NqfNWDeYb2saY?psUoYDi%qhsM4EzSgI8E3AOw;NB0000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Languages/Japanese.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Languages/Japanese.xml new file mode 100644 index 00000000..328d8440 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Languages/Japanese.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{A0786B88-2ADB-4C21-ABE8-AA2D79766269}.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{A0786B88-2ADB-4C21-ABE8-AA2D79766269}.xml new file mode 100644 index 00000000..48998107 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{A0786B88-2ADB-4C21-ABE8-AA2D79766269}.xml @@ -0,0 +1,11 @@ + + + + + + + PHP Web Project + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{D3A89FE2-7C08-433B-8165-F484A073588B}.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{D3A89FE2-7C08-433B-8165-F484A073588B}.xml new file mode 100644 index 00000000..f09a403f --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{D3A89FE2-7C08-433B-8165-F484A073588B}.xml @@ -0,0 +1,11 @@ + + + + + + + PHP Web Project + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln new file mode 100644 index 00000000..3d3faa82 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj new file mode 100644 index 00000000..624d92e7 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj @@ -0,0 +1,25 @@ + + + + + + + + Application Development + Websites + PHP + + + + + + ]]> + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml new file mode 100644 index 00000000..2df35a0d --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml @@ -0,0 +1,9 @@ + + + Universal Editor 3 + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Properties/AssemblyInfo.cs b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..3f7464bf --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UniversalEditor.Content.PlatformIndependent")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("City of Orlando")] +[assembly: AssemblyProduct("UniversalEditor.Content.PlatformIndependent")] +[assembly: AssemblyCopyright("Copyright © City of Orlando 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f06910f7-0c0e-41ec-b0b2-cb7ef1d18d8e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/AssetsDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/AssetsDatabase.xml new file mode 100644 index 00000000..fd3da35d --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/AssetsDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ContactsDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ContactsDatabase.xml new file mode 100644 index 00000000..5bfeaa1d --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ContactsDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/EventsDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/EventsDatabase.xml new file mode 100644 index 00000000..bbe67ac3 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/EventsDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/FacultyDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/FacultyDatabase.xml new file mode 100644 index 00000000..98c004c8 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/FacultyDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/IssuesDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/IssuesDatabase.xml new file mode 100644 index 00000000..3aa03ba6 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/IssuesDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/MarketingProjectsDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/MarketingProjectsDatabase.xml new file mode 100644 index 00000000..002bd24a --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/MarketingProjectsDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/NorthwindDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/NorthwindDatabase.xml new file mode 100644 index 00000000..15cb6f6e --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/NorthwindDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ProjectsDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ProjectsDatabase.xml new file mode 100644 index 00000000..9715dae7 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/ProjectsDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/SalesPipelineDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/SalesPipelineDatabase.xml new file mode 100644 index 00000000..af37440c --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/SalesPipelineDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/StudentsDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/StudentsDatabase.xml new file mode 100644 index 00000000..79ad5417 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/StudentsDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/TasksDatabase.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/TasksDatabase.xml new file mode 100644 index 00000000..1287661a --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/TasksDatabase.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/database.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Database/database.ico new file mode 100644 index 0000000000000000000000000000000000000000..fe431e1b34aab29745e9fe2e7746a0c63ca29f3e GIT binary patch literal 169086 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
sB=QBn_J8r|gS)Vt(hhv1-r<*fsJM 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 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/WindowsFileSystem.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/WindowsFileSystem.xml new file mode 100644 index 00000000..5e86b454 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/WindowsFileSystem.xml @@ -0,0 +1,63 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/windows_16x16.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/windows_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5b8e4df4cd6ce0cf24649cfb46b8576d6c6524 GIT binary patch literal 939 zcmV;c162HpP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyk& z3??(g6?r)T0013nR9JLFZ*6U5Zgc_CX>@2HM@dakWG-a~00095 zNkle)AK9=;VHGe zbDpSW%V25Xw!sZ6l%^&#$4PG?adYQ;NHy$r|);I*+_I`+Ba+@`6KJsNQu0g6rK{gYSi)r2tbH6h(y}YTU{I z>E9yXOYa{Z$Dy!Zt!R|H*4AR*WC|S#H<Q=@BN^5smm z*U}$bob5*j(x$hq)v+=nFvfY#5Qt;vVH+L~13zB3;PQq<3gF!7G)19v<%$?M(s(cp z?C&1y1OP!%XzL5*0D(Z<0I;oqJBCkYve7T6bIQ9B1-z90eLzX%@O=+iLmDnRQIYv; zp{Y$jjL-JXB(*+0qkER_VfoU;kZpUfs0>6=L?|kQ02jVjKs?O`i%v{l`=R~Yp{@7l z+jG^cV~0Q7yDj!0#Zf{5mC9g@ffQzu$^tk4YB~%2{O>T$$Eo9+%S*$dGfQiXUG*jO|eMkM~^#i#*{~Obv?%w-{adPB<+SI;VUNYA^*|WPi_ZaLMS#~mObEW_Q N002ovPDHLkV1i<0r;Pvr literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/windows_32x32.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/FileSystem/windows_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..23c4eb72aec62d66e4855e852ea95e69b22d2da5 GIT binary patch literal 2622 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 literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Asset Tracking.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Asset Tracking.xml new file mode 100644 index 00000000..d8222f7e --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Asset Tracking.xml @@ -0,0 +1,62 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Expense Report.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Expense Report.xml new file mode 100644 index 00000000..375a5181 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Expense Report.xml @@ -0,0 +1,62 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Meeting Agenda.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Meeting Agenda.xml new file mode 100644 index 00000000..3718e644 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Meeting Agenda.xml @@ -0,0 +1,62 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Status Report.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Status Report.xml new file mode 100644 index 00000000..f6ec5539 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Status Report.xml @@ -0,0 +1,62 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Travel Request.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Travel Request.xml new file mode 100644 index 00000000..4b1fd1e3 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/Travel Request.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_16x16.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f2da7556e70026dff7b0473d38ed889c549370 GIT binary patch literal 846 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 M07*qoM6N<$f^B{L+W-In literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_48x48.png b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Form/icon_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..9881eb8db3bd6f271d6a2a0d890b3e862ec5508a GIT binary patch literal 3637 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 Hu0mjfqV^Lr literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Software Development/Websites/PHP/PHP Web Project.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Software Development/Websites/PHP/PHP Web Project.xml new file mode 100644 index 00000000..9fa93939 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Software Development/Websites/PHP/PHP Web Project.xml @@ -0,0 +1,27 @@ + + + + + + + + + Application Development + Websites + PHP + + + + + + ]]> + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.ico new file mode 100644 index 0000000000000000000000000000000000000000..3cced8c5dfa3e055611821232d36918170f4fec9 GIT binary patch literal 4150 zcmd5_blp+JApsYfWO+g~4jcf^F&pC7M4IoWVB~`Q4-1;wp%YVP` zKg)N{35W9*=O>)E-{#QgFE|%|%Hh1r;c#~CGX9 z5b_YR5hMs=1R=tQb+bR--vn?Ep$dVBN)QSVauKo+G7vse&O7}GzYPp3greG*_CF{dZPZX`%DB9e=pvSL2G(-PVM2JfK-XPY1Rv#m@z4e%22 z>B?;9_l-rGoZ~9b?wVxP(sT;~_o;rz{*KB#9l$KY6v8CpIKmUeLBu{p{-i!~Tz~$^ zpSQ>BQElN8zyjhN;xr-=Jx3fxq`14->~pr>Lu>o~{s#FvzzX6bq84!m;d{hM1Vy%> zPoZ;CbE6W=1 z??Co4?nmTs8b~ky>dokE7u_Gz&FJy};R?R+6?x@%haLW%Wx|j!x375`J+1I@edsei zcT6Anbir>#?>)S5Wk7fFvF?1I&f$^HzDH-*sUvY5eW0~&)qd8Z{X{iSq9-}h!A#)a za6cXWT>k)pa+5ULOfp5RN327rMN}YEv$cWBLpdTPhMZMA)rmp`8G>cA8T?3(GjS7( z?FbJLTQ?}M5wQWGo~5W^DX5mP6hIVIhp4C&vlO4)H-jI2)qy{`*o8ou)>tT})gTkq z<=?5zNvW15Rb<{O7bnPtH;YoEWJx!26GO8Tg0teelAA$BLk_iQP5bAjkF#KMu?MjW zu>;{DLMvhmBKb;*z#2lnLaLxfUsWR9W$PkYK@?W4X3ihy_pR{dB2}+Po9C~WrPbvN zYjRQ)QbDEUR(X0nbN-a50zpJxVpujmI4kbDBsPdjFHszMVCMY%0N0FHOOFxy7z!{N zLdBIL&Kg1yM>2%MK~_*vr*M!V6b>?kDE{`)4F2t)OF2`^RIVOxo`1vtxs3lSC5dI? zc)5r@e-fQPls!NBKhT(0Uv=nA`#*_$rSSFg2qG2i0mOb}Dt!;aRyZiHjH%0p!)OSl zt}z^Vs>=+1a)@X7%;p{RCl{DeXYvP$L=*>10xu@(SDDbuf5Ei>#gYCk+EwaH6KrcDLx`ep`c{hpz#QH}29(MEH zcgEE!_TuNV3x|@=9pGI$DO1)^>XIQ;N!XyH=b#zhlAdU+nad-)L0!NSG<0Pl80HxmvTaEJoF8!>~QpBOf} zyiTothHb*C%-D%E|7SvEa&q^f-9L<5c5knw}aa> z2!9_lgHMHPYL%uH(6JQCjMx-GfW6$&z2Tft>^>>-os4%G4!3hk-~Fk0_mSk?US3ut z5Tan~6;jJHou5=2=hlEm8$At-WOA`EJk#rB`_)rjfn2FywZy$U(Lob^R+_Z`c-|k+ zrdkHXoE=6mYLF;yjGMtPON(1Dz%n}u>8WO_N_g^+ZwI3jH5t6;nWAofX4;wQTj$1N zzCKm3$1CxusDe)d*`lDvZTkFo)A`E=piyfDfu^l#{d`8fFuEs2^}4!G*FLqRmT4s1 z1p9u$Az6Y=oXAr>_mY)4Q?G^)%;HyNCK>?O*lCU^$dIvDL#4{B+K0L7@x}<*)$jVE z?Xxc?@=hyKLVAZfS(&3nv(`eX{Ya_ZZ*G22WGB;vXTU8AB#ODk`L2PcMrA>XTp%on zf6k^^ zQA)3yz;7rN8}aEUYX$t!S8r06)gVJ5jlHg$o#uIb(^g+;eAfhiQ*p)?{yN~Y0d?yz zvj#6$4dW|@k)?IDeyww1twp;=ZGt*c>GVoYLP!$Vz3YD6){7?aRq{+_aYj>7dV@?% z-<p267w literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.xml new file mode 100644 index 00000000..30dff7b1 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/HTMLPage.xml @@ -0,0 +1,34 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.ico new file mode 100644 index 0000000000000000000000000000000000000000..3f06aa7322a713b0ea03384de5ac3c5cba27b003 GIT binary patch literal 3618 zcmeH}2T&Ae7=~XJdyla<>|Inqu|;f1QBb6bVxdbB;Y8!v8zd@5MFBw&>0Lk&=^O|L z2r9-zorENaiXa-5qu<@;+XY8WPBO`ilbMX)%roEp`~JKC?#|r*EYJ?^(Wf`4cY$6< zU_1bM`Id257l2R4CepD!#0Y|&_pvh5P=V;TcE;o8)`4u;F-@()cQK2@)93)0lQFn`2dmv+)){P z6e+XTUI0 zNEilEf+0TF=Qr?A-vIAVHK5%GSKtlMn5{Hx=8Wmnrc53`ZVYI=a^+?dVc`D0jzK*um3bmz+RTnOpuQCU`VN?VA z_3qKFOD8!wx%RwalO|0VJ9^Z};e)^YqED|5Ts~|_|GqtYbnn`^qa2U>o3PLLFJSjn zc|w(Fb5B)QgqgY$%rq2XuAu}Ac8}FmhNaeQSglln)hZQO6I-?C!diPCY;@+scFjWA z>Mn#mv2E=l*y}BVgPtlJ^cQ2h!4fzcE=9pQc{m!;OIWuYJJzp&^Llj@noPh>6AkRz zsEOU1SAlP;gFQr{`AqCJTaEqZx;SX1heOr|IK0&mM{JBxWWNwc?Tm4ZD0bGst^NAA zk{>`{A>_Wp|wwC@vsj;JGQ{db^_ z!x?pfyHHQC9!L#1hx#Bs>Vx@63-myGuqW!t39J_yLiZyh#EbAoL-;{th54W{;t;aJ zFOnyYKoIWB`9cusi|oitXpC_|6Oj|;PrqG}6YY=Om;f}#9!FE$apcC5PvYH>7Z-%) zt8Ng+g^*)HTO324DM$#1_?kP!N$x02jKs~PC`gje6CNnK9t}x~7mAZ(AW5Z8K9Z(+ zLz3o0Uh?6*bcfs|&G3aZ(-(Kr6Ub41oTo~%uHmlWI(h1PtEbY)Q$$_{9u{VEZu;%5 zlga|gO+n-)>f|TpQ7{pLa?VpBEuJb5r_Q=6l87Q-MH8&IV#!&ts3^TpJ-)?XPZP*t ziLDMxrk;YzveFihRc27nB%e`domM3P^E{g%w>`f>PRk|oIJdoc`sh8s<&)zIIM4B` zCD=potI0brZxTh|zmVV<%S#DfRaH=z;>;^4&JupF8Th@CBCLjmK{$(uK`cw{|KC*w z|9LH)JYn3}F{4M07(Q(9pnE3p3)q~5geeC|W_2TmM3&P&(9NP%gQgvx1LW|kd9+ZD~;yC55 zlh|BAL1Fr|sZ%D78am)F#pQdy-r-=s)xy-oNLO2P`4U#{vz2Dfpc>GcJ3HE0TWmHl z)YH~dTe4`uToq-dS?}^ayLpsbnr<}KU9F);Ujy^!C@U$x%l~G5c8yP0^ez5DWdR*N IHSaI@2Td!iQ~&?~ literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.xml new file mode 100644 index 00000000..127c0c3a --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/MasterPage.xml @@ -0,0 +1,48 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/TravelRequest.xsn b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/TravelRequest.xsn new file mode 100644 index 0000000000000000000000000000000000000000..cc5d9ef771fe8120e0384f5b118d14f1b51fdfb7 GIT binary patch literal 15855 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

wG>u})t5 z;f1x@vrZHTVz^awgJsm<$&qwFZLotLcKc7+T{gc?(2{{h%6kZVV>;Bvky}IwDMU|e zy_*OTI<^xL5FI1aH$e+>*_6&+kvh+9I;)~G@6}c!=Xbh$DM?_HIa=!+Bcx>>MEYS+ zt<;AP*X~ zO@1wuMQmmm2wDRKrLvKbya=8+>~Kbaz`o|ZR6nYT|`;@lQ`xPUWj=9PY?nmi)=INld^ z0P{E%>&lu=l6YcX1U2|6BXD$y*oGzn$^ko6I!Yu9$VVhPL7PR7!^c_bHYJM5t z+*>sVCi65T%^d5MW>x}Vmm=FEC~j*y{(ZOKQV00&Px9^D7;1{(JYE9%L{A4xZiz2e ztg3oUAV{Y%!2=uzK$I0Ua8Idc7XZM`!V{PruEkH#T-W9g04p|Y0VHLz4zthakp88N zDfYqvg|{1_7Bn^Qalj5g|6Sv}cV{wIf#8A7(3+cjj?=JeFaXPXDsNJif*vVEPw^}N z-`>AjU17irgeWc2rH$zhwt`KJi20ZN*h!(?@{DLNKRON!N?I#Z^R%<}mb@LOy(*ND zyV7K&O!z!3!{PiQL}bb;QzSOkQd^Znfa1hO-+;+nqkszRVB*qEh%jOf1a43{t?+PFe!W6fyNBnjgb3ut{MOSk&Oz7-=AaDCQPvpi3Vveoj2 z1++6_a?Z+{Y3iE0&b~oDiu-xw#)%yIdBnl3eH_6Fts_mnWWuFi0JU_bF6G+43zJ}9 zuS0(w07HGAMCMrI+Rx<4e)kw0Q4B(vv_vEY6&#v|F%RuLrh6&aUvvgL2Po`F8gm_O z2!F6f{637mm@@WiY=JEfviiqVXr~R~duXKR-tfyXiQ+Af$q}um3RJiXEGL-v-fhMz~g%h_tor{M_t?V1@pKS{f5JBzF&y1yS~Hyn!Lti zAMH?t#&fXJbDHVa$94JA^_u(c=caV0-Bw@nU_72JFYUS4zCXd}x}0~9slN9U zmAziqs=Ytcw!W_)x4UkS@V;J`*RDTLTcez2Pdv>RZW!LZZwHa^xSUVpzd3eVVx#tM zS#?E*%PUkh9p8PQrCVOxfwo#bx7DM3+{X#7Y`Wj6lQ!Rj=d(G%d{GFo0Qv#+;pME0A-fP-(P z@Ex}#oV$D_z}J!9C`AQOAEoI}cN=|KMCdfCaty|hFFbI7-L5ugB%K%RTNIj<#dqH3Al>0v5^~{4 z{F5*qvvbYnSvP^-)sA;C5Kc6b%>nrosE|wQLBBAzxa;+5DbWcU;e$?&>o8NMJjCd< z6okG^a4+b8n$XJtj_WspFZ+Gvw3C8Kx!~IhX9suco!1+DV2#rvQ(>CZMAG#M!iNOy zBQ=;D{bCmko`ahq zxp1K|)mf!GU?UvD-ikE*G-gvI2MaSpXD0f;qMU^;H58Rhjyp_h{4F8n=oE;_)T{fo z1f}Qh(U9Di69(m0VJayTo@^0M>nAnJNsCzw&t&<`yV0S=iGFWuCq&NT`gHz2_2OkB z+w3iK@MoR2`0!Gx z$>em4HM+Kkgk3Xp$1vSkPk|<38l{4PW~I_tR^)}PLWYBup(G^;Nb_^G^HEz2oQmXF zRyv@N120+ZB2;~Cvy3UvNU4M>Ve1+$dlzH-$QBJ_#-yCq-GYC&FBW@_A+*EMM zu?V8)C)APo!0M<$ydy46*S!bq8d)@B6Mz{6#6U^=;C90%u&rOKHB=p}JoHxqZ?LgX zaaJKu6vRrJ7vmq97kCnr~)U@{eORn>MLYo?%EBFKzQt zSS5^qu}^6OPuQTKPIE=Tu`nj1bUQsbuC31~Mgy914*F4%F$)9ai`QUWCYm#K7*AEE zMOiV&L1}^oh=B8--s3wu7yobFTxG=QFm;$ea}{POxuUdYZ_#)3Pn$ZIH;I&EUtHjM zuHdFC!f_M;nry{$ZO=iZ+O_BpYdc*ZtJ%b@GZY4%E6hlwlcN0D2I90502bn3i9ez7 zC-zxDqS|wEDf$X)Ivd#&^^f%@K{A>w5Elak#DNe}r_={?Nh8EyKosdOxyVqMjCO(} z@&cY*7K8zN&Td1Z*HNM4;t>Ej>7(kiL+C<+dhJWf?(&!&ue3*>VDZ-MPiZJc)}gis z;ym?{n!ggBJ5&kZX19rP{vk;%3|Ui?l!?m28Fgyi|N6qEHwk|`CpI?9W{Z<0Y1TS>Y(pa1FAG1g zy@H0;4qW;pu`=o`*qVcF@=9OW6nkEGjIDM9hU9wh6+p0u0JDNpmVO`xn9J0{$-xOi zjycZyXy8I`C`X3uto7dknsjo8k4F<)3e-gkWbVKi!Fm;_zA6eSFe!Ak2x$D_Q3bnv zMWQtLgsM)q;lY^wd5A8_;xGzqdm!hm*BxPgr1*RVIkr@U!ytq2s?>d5{Hxh0^anAm z(Cke-m^nPUjo37#mWj3qRR;TR0?1p_`Tj{lp=6eSrGFUjo<#{KJ}ym)A_ZpmFHTp5 zuMG3E%&7KMXtRsp<^0J&~1x!nrb<%HOUh4BMd&a>|<#1bcP9FA*9L^R7ztYz>MP2&ecQ*{5ZJ|3V8IG5Nc1wW_ z0b!;t!U6sagi2#?3vFGKDpw5PMuaI^xp`>m!P{u)jv>n|cC?Sbr+5H$q?1H;qy-zT~2@|u`2Mh>7Y?vWt zV7?}AJN0-usHu9J0GZ_#gp)MP=tL81$GIldui+n=P0oz_fleADSW;}=%*Zd7T8iQi z_mOyKu0vU@)D=(?ld`yU!3ZZ{18+i+hXVv5Yo+ZG3m`6{k>e!Fj{5rxunI-PKhjZJ zZepX50qE&T9P*sw*gF3*h_%E#5&&=03;xYzYvZ`~(_Dp7bffQjdI9TBv4^|moC#4B z*gTc!AneCy_1bW?LlZ|5p)`n(9BL+_j8Ze#6Z>XIR1?WC69gb~PT-4hF%*%LF4lTX z_LDWylU(TW7?2LcsB(Rd@X*&D&*z0oBq<;q(i0S{3dBoJWEEEyqNF%OmP~O<_f(~J zu@Q>SU5;)eLO-#Zug|usnh2G(ZZ~Jrs2Ewf5>s4v!6GFv#h>*43lMt#(;*uz#n&Na(G0a`40W ztaFW5^H$xzhB##CtPRCSUVl*Cva0#)rU^^ZQiW4Dq~M_$PCVKyffMPYL?797Ab@L* zmxSvX_-dYcUy>2|)$e4|GD>3SwV;oSFSbHhb9o357kg3OOgzVCaO`V2qHe*gyKT0e zC4;bLgQ)YWkbWon(iu+7jWUBj`$?Q1-$z|?R zlj-c)8m9?OW5K%`(@FR9#Hm}UHeEl|Tf;KMTVpeXr&>w6n7a^zP%KBL+34t8X;ZYP zS?>aIWE%^gW}6q^T5uQh?_Rb2!os!Vf@qRpoPVo_>MX~iINso)X5bMDdS|f{-os(; zv4dS#`x*lsMHDDIC3fD2Njq!)lNwRIkLTxVCmUh}kN+dvTM1 z!D|{T z0Rv>hIp?x$e6@>ygz5t8m6Z^xJ!O6EAMxBjfDNTkEXYnzT7OX#4mDzki4@MdUHTzc zl#e5DD;$e9jmAEsH5+TA|4%8xL*oo0tI5 z&vFRZ{*d#o-eMaTmTzmJtH~d|W2{izj?2dC7=LI~sS+wdpxDeD ziybZ|3Sn1k7Uw_zIg-yZ)EFePh<|+wR*jY6GI$yjiw4S0X0Sq!sWF-1Q> z*(-i!Qh+lRO_f7)zQ_PIY~(ZK?nL(b%iATj27OpTX=&k4Rr*6fF3~o&YlY{2#;y-W z_}W1Q#tK5*em+hk#C4aQ36Sd<=!FjZgPT)pEKuZ@rc~RizPw3+y?}D}eq^ZmOMo3? zb^Qp{5D!(;rnj$MNAxXmlNMYqK6wHJM3HDZ$zP^s634k-ybf>oGkW!uWs`OW0Q4P& zW3X-QKZ)kya39F)!a7MkbH*FJwEi2Htw#n??(Vvc_=at17gS!)0O9pQ5vF?On?m^3 zp5Mp%=Y!E$79BbNvb|K&BfNX6cqflws;_u03jsM;CDcNB6ScH`*V2kFD=yyyv2MT1 zhR+h;n2jV13Y;VT)bSz+ESWPt>ma9Jgv@%#UV)^Jj68!A zSi*`WFhwHyaA32%^Ov5>TMU}WxbrsEg@hY01VcxqfI2{RyHuYX37K{bOQd`x(#KQ; zA{HqGDTpfth2CVVvzm*{Bk2xyh<5uz#E z%WZn2td)qnSp0Z{bhdmSn7Zoh=KgOE1a}HSM@ImL02cX-NJUV{I(`SB^ za#3OToFT7W-Dc22kov^nZ-vk%s;Sd<~f5{%HX>MBtQ4K%AH&Fq9i^|sUBX8!MOed2K(v)m zLALzek`~sKP++!>Ad+EV|sfL$9xIFRgf%25GX8+7LCN^Dzc+2i2VZL&}ng97{;f7 zF^nFMX{hduO9*k<|CN8A%I-cD&jZJ?>M3A^zj$jz6O1T1Y8n ze?gN(+G3xOzcVbfEWc_s3O*@plCOS$gTP+|{n18nZ@8m))Tqo@jm_m9uSE=3kWPZG zp7@mldO~_~`S-~dW^K_TnygtB%h$43=TNJznX0ucoAPf0v686I?S?BByD3u9^{v@J zY9sR0!qwHRY1qMfZ(0_hO&fVhdJHl7ZO;Z`y(>Av6oJacXo~p~M{~le1x7A5Wuqocj+-#!`mrCXoH4CpE;Z`JS+?q zeW5gqBSV&RrCj2DJ8vTY68V%Rk9G zWxby!xv!opa&=(%iG z8&Lv>MgLN^E4_-z!?dy$O>)0cI%GZ@k&U#H@AQJM*Mq@htVfg!P}MqU34HL{tRysr zCL?zS5?~PQ=XJ1iqlTz`5I3SJ)v;f9q&n+deRy;OItM)clXW*&q(tJVQ=_HOxy+-d zZd@H+mx|KAQs=xS0+?qBI$L3P#&l=}HN*>{OiV4I3a{7FsgapQpSTi44Gw>#mjY!h z=|tlm0@)W^zqiE6nz~rQE_5;12UKe`d>x5MGHUEFhiY1?pd{iPe#^?XC~8rqnHGXw z-GAauLXl;T35A)L?gwb!m$g5brml}08zINe`x`C2zL2*FD!D}!yiB3BBc8H@Nlidx z`Wg{wSLID-`4;wi7|h~k-rqXoun@eizFcM?wCWUJen6}+7-kQPIo*4PKf%fbOm$w> z4uglA95tonO>Edik$SOQZcPO>*R@XqC{{VSNlzPwdCAwMJ#=fv@g4@jE z{XGj7@aKaS5Zr8rb-#fr9OVr&C(x|d!i985 zS^;`|poAmLNFMzstgMxg_8j;JgC`7BFFOc)$I4umGfeT+Jej^+5Y4&KD1s8X(JW1( zV2C=CBLjob9MK(OZZXErNGz=pmqWnJ6vzG2X%TFVd%M9y`oxQjiH)tbt!?ew`?^BP z1l20~AYtl4=u!2y>ubsRaU^gx^|sgjtMGDQ^LuqiSL5yNVE;6Fw#RC1%f{!;<@nNR zb@sVYHa5EgE^{@Prpv?Urf>Rw^ZLAV6u-O1*R$Q`WW3W;?DW%CTPt<_2m1d3Q&d`E literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebForm.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebForm.ico new file mode 100644 index 0000000000000000000000000000000000000000..d331d7b79de28c704d2954af6f5847efd7e70edf GIT binary patch literal 4150 zcmeHKYfzNu75>unXMf~pes!GAr0rzVnRePZnIz*ST1`L`FCYji8i^1u2qh|4xd|fR zr2#95BoGO#0z!6?JBTdqvfM$g3xbyzBbw@7kfdeL>GQp>d~P&DrkPG>I@52?x4V3t zJ?DMTbDrnCt0>PYKT}?KLBacrO7QcF@@qv=7A%l|>wcjq$MEd8cm@{*kA)xJ{!>>` zMpQ(A=RW_p!#Dmp%;&AWUQ70@TeNGuE14>o zN|=g;d3D)$u6aZH>vN8b((E8}4^umn*-(6msg9|N=?kV(VO#qhA?p`Q|Ej!WljN$* zJ!&|e)=RS{z0Sncd_K>RlU|e_m7B0v&$N5Q5$3yG`q!U5d7J14^EmS`Q=388$u#4z zP2IRQ)@{m5469*^7fZb#H^dv!={q zIA^LTG?wN!pF7j|`Kh{sOju50nDqa*UYQjo{<)uatKU_5wgC4M+$tacfBobN6d#RA z4c&Y=WOGW0fASu`L%TO7?eakvCj@)P2YJQqSby+?b+Oym#%x~`{r-DVTUSR0tcnO& zbzrl{{!Q{F(4EI~{7vJS!zRN-(OWsREU~{C$s&pp~e$5OWO1(9ma&!97b!Wn) z^WcOtdVKo8m^0i8WpeBuat04N0E6n!gCfkx$ z+oD$cn?kfgyq0MDE%`X%o}d>RA3TO&OfZ3Dr{hD1n65JQF?Ta{Fj<%&IiNL&(8Sch z3hn&q{vQmE zhlmf61{PsHk3||;D)Wxng^*wu?m(Q)h@E7Dcw3o|pyZs}-725jii?X4$Pt_moRF<8F zfdC+6JB_JR4(+7kJD)MF@3impU#Z1!I-mC~^CM;_vjhTF!Y(RukAo3kGDfJn1q=kV z6H*}fJowf#`E)x#Z7u%gvV1u%Fv^fZ06|D$_%sW=R`->el8?R;{WJPw{fQy$-)rB$ z*+YxpT2YAj*uo4Gb|HZP*41aT(N0Jqcn#7Kwg9Z>D^6bAC8n+Y_J}Q>T6~j1H~UQe zv5VT`GXm=;qyrG5om8yRP8zT0u;vyVSeOC_9MC{5zNM^(qU%4!qmbXJmiGTYVkX3%Mo9u_)Zi`V%>b95WEHuf^;e)WIN4Y zAEekb?1Bz||J0sTPCs1kO86lhnZXwmCXC7A;4ssS;7|9}x;qfSf;ZT)@C)rkL8 z|06}~#WG<1)N|}&{`fe}?Xx;#wm*q~)mSV08CyV=unXBv=9+SJtV2i#fDqE5?qdG> z0PDyxr*`PWE(T4FGQO;m1Oh4A>h!3RNTF6qVm&t|)JZglHR1FM^_y!aj+vOoNY&~y zY;M-#yQgSxsB~*5a>H6Zu?nndQk;%QA4>=KsfTfnpP0tf*5Z$}qo-JT$p*7#1dbkg zeLkE@4nb|y;1LWAMof3U)dhI%(7>(`NKD^1ifYq{8P)eKQwRoU6cRI zjlREW*zi)l_pj>KEvQ}l%cSd091OJh*3K)4|I{Uc(Ar5>Nk|8PpgCTv!xZ!S+V?b^ zQ*JurgT1x*<6U3|*B1V*^i(Q7WX9||61D{&-~$w3vST4lz#3J8bZ8omVG1CGz^c+A zd5v?3c1TB-YdvjzDBn^Vv&w?6cA#+DWYvQb-L)ib)k~5-B)om#=$#q=1cenXDbg5zFNv zQ`10eeSdRJPg7-QeTAjE6dGu(C~PjvZ#tKYc~t#bR^=zh^|=}4*{K&!CYOAis5=pd ebKvJ0QH5y{(zN*h(;wVx9 + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.ico new file mode 100644 index 0000000000000000000000000000000000000000..1aa23046995fc02cbcb8b6e6503bedbffad38b13 GIT binary patch literal 4150 zcmc(iX;4#H7RS@$hpw9Hs`kTtu&df?OM9jj$95S96l@Ry7hF)07HLFw7ZedhP(ehI z#Q+Mj69^Cj2}!`Phb;t5gBVDFge8CkPz2cm*+U3(!n2tG-Ou?jQ}gOB@7?!*zjNPt z_nvzn2J;2xPnh-VF;H*7Tv>;~{0)P_Y}$lelfJ@WVxes-w1ETz%}Y9{{#!@c4x*}{vCuT9e3 zGRJ4n@>t^5no2^#vL4}=aRrL$F|*(!M&717oea00-W7lD=U@v}M zJv(Wh>!?vIEGidwIvGI;Da7iqM9`$KU*@Z2b2gOAh#ssU`UHD>iLg~)zs%>Ar#uL< zq50d@q=Y%03f}SkjV<4}e!Jd5HrT1JNBDCMw64%od(-~x61th`xQ&?n1mSPnbXh(u zT&tI4_=iU9aVYw#>GAh=K?WA-e?|00Kl&@j2G{CI$*${4x29+A*9I7Q6nNm-JzXg>-BbUreXOJ)GZf&UleR<8r zt>g8%;jKQnxApY?y28F1 zYF~9hFN4%mLF_3bbeCjz(eYg`aeP`DpOV~BkkmnX!OM%|s>X+vOD5zaLfKH4>@8mgCWNgz69U8p zOU$jC0TV5ZndS;^HWrdMny5{Gm)w2_wjg=j&avrm^t%lC2Dr%{qHkXoqEhfGy z%3)D6>&WS~c`4O|L`L?D3VfWHQw?vy%ZWkfYov4X;T|Y8lIeNzgnDXBJ^5Za4pDPZ z@vdJ!+$$gIlE3Yg_4A~?;HVaOi`mXsx(M3F6mx3eTdd_%Mm|u5eN--&#%9r~N@;X* zVF6wvoiz_XYZhu_9B_2+wS#*+f7<1C;KxhGI~?~tI(+25`Jq5lvpWZV@-sHMwQv6% zm}mzRb?td^Yx(+Lc|j#tj=qIbqmWoe+Z~FqJrI1t@TTQnFY`T@&33yV*y(H>Zhbt& z(h4!*zhnaZGuP1wCOXLfUIbwLP{az#M==%p-z%hX+o(wYi%HP`1*QB1&e=NUqJFs9 z=WAu?ZK2=t(CTpTAqy$2GlHhMj#r(OB=r7kHEI}^P-@l6Q`v4OGo1BlCV@xy`yJMA zd2-A;^zadBZ>yyHwS@mGpPIUgPyHyS43AQD{%@nP>%sqp#o+%;h>NxbSI*>l>eCK} zoi=@NQokkU^qHq8Pl11=LJpV^6sE7@>pLILA)uDG6Fh3C;I-pbhfLK#CdjOCh=-B*3C7_#)fEOonYj9%cAUt zRiullr=xjFVg&LP{=Vh*){QrG0cxm6KFIH_AfoegV;{hZ+DwRjpLur(cPBW?!<%mB zS!^AdZp;m_z2#$Z($mu1e@oD9JA}W-05%c+5Cb7V$%ndyjC^!{UR)@Qd?qgP1Nli{ z)a^jB`<*HWe1VM!>mqn;f6nKGY52~6M1OnT%M#)5+a0lI`vdTgZre2??5iq3=NBY| zX;sR`?AX-g`;K&1?|Nq(-g`77VD!0X-;?uhSq7GPgOe!+zP`s0zU9GmGvj#W$6@7| z2;Ksg40JvY_(D|^()M_-X?3a=BN0)oC2_xB&?+6*ZctWPr)C*@(^aTfs zp>M(|-_S76YaOocZ!S7D+Fz&!|EQN1ivboLolnQbENU0zvRMKXhiy+~Pcrxt&V)ih z9mxrabL>jCqQ;$w$N5Z7jV$f0q!4CdJnJI4ZasQG*ieGbFUfp{ICgZrue33@<_$?O z%!;7;-Q!~&^R6XC{!*LzXt}V)!VCC0V=M)ts zrjw&%@*WmtK4ceWty;e{a;Zi(J1?11izh@)mFRrfr7rW)PGFy?)xdUAt5(5yeqBng zB_t{{N$vG(ex&qv1kt+q-oamqtVW)sybJzJq6)g{vglL$!%ubnr~0?{-+SgWZC}FuuOWX2*-U5qUlk5% Ai~s-t literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.xml new file mode 100644 index 00000000..8725f44f --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebService.xml @@ -0,0 +1,68 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.ico b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.ico new file mode 100644 index 0000000000000000000000000000000000000000..455d76c830cc2870415abe0bd004d2b9bbf40196 GIT binary patch literal 3638 zcmeH}2~^E_6vuCbO31!MvL;)Wlp>K9Q6!~(Bk57JA{C)R5fLRzGL5CsqGD!@3=>IF z+EA1jvdz?cuVF@d^Zh-Z`4`TdGv_#S<{bB&&-vbazyJ5|_x` zM>L#>l$GDr$7P73&>MjsE+MqV*FioR`!%FV#Y~OHI%txbqXvz4(xPKF>ZIv8jWkzG zBkh&bNq3zQ-Sp8Xy%1y4NwlG+T@Ivw)R9b5+{hG|r}Bsn-6#7jA94WFhpWly>?-oe z2_a9$#SjY0+fD`NPE*OHb5wri0?48JMc1jitdQ!eE2-{5CDp%tM#n_Wlnhe9NpK3J zfpm}o&VWpi4bFk@z*&)qzK5O%KZ1(4O>_Zz5&Q%$gL~**#&uVb=R)(K`JlL2M33O* zp?3|GH#buu`Zqusyh8Mf#I=ZSA}>LH3t9!Q1X>23HaAfP^fstPzY1syljWIQu7S;w6wHX?Wmxvq$oYfY>uw3 z9;=;t;C?dNxS#PXR=f1U{W{LDu{1X~W%Xk5{pLH^T3Ia+*X~Q*mbfl*wzsvmW;OTi zpl%iH>lGsP?_jTGb58zEXzYYmu=7ck#kM}x#zAYul#WGFWg2Ur7@&^sev|?@1+^J4Wxgifef$m z$taIc#$e7hKAGk>(7b#;nO*18&U=Zppny*ng#xO*aha@c2*?`P74gZwNI=fT;1-`; zO9bRvDj@eVP%b17;8`IcuR8+rz9S^xyF&5@t1E>R0G{0~rogI3dQnwMLH8Re1ccTI zDZI9kwmfX42q1i1L$97cqUOeW620P!XZ{bEqioja0Lh%s!9U~@>YqWbSl`WiHtVmz zy9T`qWpn>JVDr8JDw+2MsBfZ{%==>GZ06sBvbkT3ycEjjf0?+4eE}^+T>)jg;5M`z zdI!pOLM8MLvLlvk-&UQo%lY=Hi-*t$&___VJ060^$R9!34*3OI z2W7kD33!IQ4*C?lK>iH+9Q=x$?U>)7FU2*>-|ZU#dJV{hP(HK~%Jz>?oQvpp=pX2@ zee@czo%9AYfw$o6e)`QspP}4ZKgHfX zJIi-yXFZnVr>4N4-`&tqZc}iukMA;`%OczH96#;U(Cqn$dELS{y!Rc{IevPor#P|OC*)9BW!-pUS4NUnq z>6?TDu`xR%OZEVXyBKk^&k5S|4L3! literal 0 HcmV?d00001 diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.xml new file mode 100644 index 00000000..9cbba705 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Templates/Web/WebUserControl.xml @@ -0,0 +1,35 @@ + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj new file mode 100644 index 00000000..43c03b51 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj @@ -0,0 +1,146 @@ + + + + + Debug + AnyCPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4} + Library + Properties + UniversalEditor.Content.PlatformIndependent + UniversalEditor.Content.PlatformIndependent + v3.5 + 512 + + + + true + full + false + ..\..\Output\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + ..\..\Output\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/UniversalEditor.WindowsForms.sln b/CSharp/UniversalEditor.WindowsForms.sln index 56b08034..139eaf2c 100644 --- a/CSharp/UniversalEditor.WindowsForms.sln +++ b/CSharp/UniversalEditor.WindowsForms.sln @@ -101,172 +101,346 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.New EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms", "Engines\WindowsForms\Plugins\UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms\UniversalEditor.Plugins.UnrealEngine.UserInterface.WindowsForms.csproj", "{049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Content", "Content", "{BC6859FB-B61C-471D-9F84-613E5C388C52}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Content.PlatformIndependent", "Content\UniversalEditor.Content.PlatformIndependent\UniversalEditor.Content.PlatformIndependent.csproj", "{A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Any CPU.ActiveCfg = Release|Any CPU {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Any CPU.Build.0 = Release|Any CPU + {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2D4737E6-6D95-408A-90DB-8DFF38147E85}.Release|Mixed Platforms.Build.0 = Release|Any CPU {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Any CPU.ActiveCfg = Release|Any CPU {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Any CPU.Build.0 = Release|Any CPU + {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BAC9FDFD-C39E-4A90-B9F8-CF75B551BE10}.Release|Mixed Platforms.Build.0 = Release|Any CPU {30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30467E5C-05BC-4856-AADC-13906EF4CADD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Any CPU.ActiveCfg = Release|Any CPU {30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Any CPU.Build.0 = Release|Any CPU + {30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30467E5C-05BC-4856-AADC-13906EF4CADD}.Release|Mixed Platforms.Build.0 = Release|Any CPU {3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3F664673-7E22-4486-9AD0-FC81861D0B78}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Any CPU.ActiveCfg = Release|Any CPU {3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Any CPU.Build.0 = Release|Any CPU + {3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3F664673-7E22-4486-9AD0-FC81861D0B78}.Release|Mixed Platforms.Build.0 = Release|Any CPU {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Any CPU.Build.0 = Release|Any CPU + {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {7CA0A889-C1A1-4CEB-AA54-43A640B41C6C}.Release|Mixed Platforms.Build.0 = Release|Any CPU {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Any CPU.ActiveCfg = Release|Any CPU {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Any CPU.Build.0 = Release|Any CPU + {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BE4D0BA3-0888-42A5-9C09-FC308A4509D2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Debug|Mixed Platforms.Build.0 = Debug|x86 {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Any CPU.ActiveCfg = Release|Any CPU {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Any CPU.Build.0 = Release|Any CPU + {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {617D9EB5-CA93-45D6-AA6B-5A012B7698AC}.Release|Mixed Platforms.Build.0 = Release|x86 {8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {8622EBC4-8E20-476E-B284-33D472081F5C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Any CPU.ActiveCfg = Release|Any CPU {8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Any CPU.Build.0 = Release|Any CPU + {8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {8622EBC4-8E20-476E-B284-33D472081F5C}.Release|Mixed Platforms.Build.0 = Release|Any CPU {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Any CPU.ActiveCfg = Release|Any CPU {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Any CPU.Build.0 = Release|Any CPU + {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FE016EA3-DC31-4A92-8B0A-8C746EC117E1}.Release|Mixed Platforms.Build.0 = Release|Any CPU {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Any CPU.Build.0 = Debug|Any CPU + {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Any CPU.ActiveCfg = Release|Any CPU {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Any CPU.Build.0 = Release|Any CPU + {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {369CFD53-3E65-4A9E-8BDD-4CCD78BF3E33}.Release|Mixed Platforms.Build.0 = Release|Any CPU {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Any CPU.ActiveCfg = Release|Any CPU {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Any CPU.Build.0 = Release|Any CPU + {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {30A2F772-8EC1-425A-8D5D-36A0BE4D6B66}.Release|Mixed Platforms.Build.0 = Release|Any CPU {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Any CPU.Build.0 = Release|Any CPU + {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3DC2C1F6-F332-4E55-BF6A-AED78A7C3FD2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Any CPU.Build.0 = Release|Any CPU + {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {899E3DD6-EA65-4168-AAE3-867A4F9650A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Any CPU.Build.0 = Release|Any CPU + {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Any CPU.ActiveCfg = Release|Any CPU {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Any CPU.Build.0 = Release|Any CPU + {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {19AEFD28-37E8-4FFD-B879-FEE57824689D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Any CPU.ActiveCfg = Release|Any CPU {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Any CPU.Build.0 = Release|Any CPU + {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {76FD1306-9CA4-428F-993B-B7E4EEEACBF3}.Release|Mixed Platforms.Build.0 = Release|Any CPU {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Any CPU.ActiveCfg = Release|Any CPU {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Any CPU.Build.0 = Release|Any CPU + {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {26095090-3F7D-4DB5-A9BF-4C687230FC0F}.Release|Mixed Platforms.Build.0 = Release|Any CPU {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Any CPU.ActiveCfg = Release|Any CPU {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Any CPU.Build.0 = Release|Any CPU + {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D4D9C9A6-04A4-46AD-8238-2493A455723F}.Release|Mixed Platforms.Build.0 = Release|Any CPU {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Any CPU.ActiveCfg = Release|Any CPU {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Any CPU.Build.0 = Release|Any CPU + {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {62CFC025-B8CF-42AA-880A-92F27377FCAF}.Release|Mixed Platforms.Build.0 = Release|Any CPU {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Any CPU.Build.0 = Release|Any CPU + {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4FD9DB1D-76AA-48D1-8446-95376C4A2BC2}.Release|Mixed Platforms.Build.0 = Release|Any CPU {10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {10B9B771-9939-4D0B-8D47-501B6F60209F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Any CPU.ActiveCfg = Release|Any CPU {10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Any CPU.Build.0 = Release|Any CPU + {10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {10B9B771-9939-4D0B-8D47-501B6F60209F}.Release|Mixed Platforms.Build.0 = Release|Any CPU {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Any CPU.ActiveCfg = Release|Any CPU {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Any CPU.Build.0 = Release|Any CPU + {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FEC4EAD0-8A6E-4029-A537-EBD9F420B227}.Release|Mixed Platforms.Build.0 = Release|Any CPU {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Any CPU.Build.0 = Debug|Any CPU + {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Any CPU.ActiveCfg = Release|Any CPU {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Any CPU.Build.0 = Release|Any CPU + {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {828C6BB6-3543-4EAF-B0F9-F11410AE8836}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Any CPU.ActiveCfg = Release|Any CPU {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Any CPU.Build.0 = Release|Any CPU + {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1C24F4F8-9D94-4783-B5C0-11564D70B76A}.Release|Mixed Platforms.Build.0 = Release|Any CPU {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Any CPU.ActiveCfg = Release|Any CPU {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Any CPU.Build.0 = Release|Any CPU + {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D3BBDA07-5088-454E-A16D-DA24D8D88037}.Release|Mixed Platforms.Build.0 = Release|Any CPU {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Any CPU.ActiveCfg = Release|Any CPU {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Any CPU.Build.0 = Release|Any CPU + {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FFC91B24-39AF-49AC-9A3A-900FBE1012ED}.Release|Mixed Platforms.Build.0 = Release|Any CPU {FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FD6B879E-46B0-47BE-860E-BF0C11135590}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Any CPU.ActiveCfg = Release|Any CPU {FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Any CPU.Build.0 = Release|Any CPU + {FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FD6B879E-46B0-47BE-860E-BF0C11135590}.Release|Mixed Platforms.Build.0 = Release|Any CPU {41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {41DBA506-177E-4B2D-8E6D-738E371326A1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Any CPU.ActiveCfg = Release|Any CPU {41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Any CPU.Build.0 = Release|Any CPU + {41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {41DBA506-177E-4B2D-8E6D-738E371326A1}.Release|Mixed Platforms.Build.0 = Release|Any CPU {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Any CPU.ActiveCfg = Release|Any CPU {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Any CPU.Build.0 = Release|Any CPU + {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BED1EEAF-9ADD-46F6-92D0-53957858E25B}.Release|Mixed Platforms.Build.0 = Release|Any CPU {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Any CPU.Build.0 = Release|Any CPU + {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Release|Mixed Platforms.Build.0 = Release|Any CPU {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Any CPU.ActiveCfg = Release|Any CPU {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Any CPU.Build.0 = Release|Any CPU + {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9F1FDC26-5F1C-4C2A-BBBF-3A597A72802D}.Release|Mixed Platforms.Build.0 = Release|Any CPU {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Any CPU.Build.0 = Release|Any CPU + {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E6C9A73D-4556-4220-9BC7-302A7EE64C1A}.Release|Mixed Platforms.Build.0 = Release|Any CPU {ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {ED627DF7-3E78-4428-AB31-810BA1586E62}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Any CPU.ActiveCfg = Release|Any CPU {ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Any CPU.Build.0 = Release|Any CPU + {ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {ED627DF7-3E78-4428-AB31-810BA1586E62}.Release|Mixed Platforms.Build.0 = Release|Any CPU {DF96F24E-FED9-4BAC-8389-63590125DC61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DF96F24E-FED9-4BAC-8389-63590125DC61}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF96F24E-FED9-4BAC-8389-63590125DC61}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DF96F24E-FED9-4BAC-8389-63590125DC61}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {DF96F24E-FED9-4BAC-8389-63590125DC61}.Release|Any CPU.ActiveCfg = Release|Any CPU {DF96F24E-FED9-4BAC-8389-63590125DC61}.Release|Any CPU.Build.0 = Release|Any CPU + {DF96F24E-FED9-4BAC-8389-63590125DC61}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DF96F24E-FED9-4BAC-8389-63590125DC61}.Release|Mixed Platforms.Build.0 = Release|Any CPU {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Any CPU.Build.0 = Debug|Any CPU + {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Any CPU.ActiveCfg = Release|Any CPU {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Any CPU.Build.0 = Release|Any CPU + {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {118E40C4-323E-4B4B-8EF4-38EED6CC5E83}.Release|Mixed Platforms.Build.0 = Release|Any CPU {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Any CPU.ActiveCfg = Release|Any CPU {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Any CPU.Build.0 = Release|Any CPU + {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BCBB72BD-0ECB-4FF2-8D91-E466361FB6F9}.Release|Mixed Platforms.Build.0 = Release|Any CPU {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Any CPU.ActiveCfg = Release|Any CPU {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Any CPU.Build.0 = Release|Any CPU + {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D8E59ADD-B591-49AF-B18E-6E0D4581700C}.Release|Mixed Platforms.Build.0 = Release|Any CPU {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Any CPU.ActiveCfg = Release|Any CPU {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Any CPU.Build.0 = Release|Any CPU + {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9B5ABDC3-ADF7-42B7-ADE9-8DC715310492}.Release|Mixed Platforms.Build.0 = Release|Any CPU {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Any CPU.ActiveCfg = Release|Any CPU {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Any CPU.Build.0 = Release|Any CPU + {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4250B20B-2DC9-432F-B0C2-BD20B80B4970}.Release|Mixed Platforms.Build.0 = Release|Any CPU {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Release|Any CPU.ActiveCfg = Release|Any CPU {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Release|Any CPU.Build.0 = Release|Any CPU + {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Release|Any CPU.Build.0 = Release|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4}.Release|Mixed Platforms.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -317,5 +491,6 @@ Global {4250B20B-2DC9-432F-B0C2-BD20B80B4970} = {D3CE7A47-3989-4B6D-9867-0EA3C8DD7AB1} {049A3447-14AF-4CAE-BE0E-1C42DD1AB1CB} = {D3CE7A47-3989-4B6D-9867-0EA3C8DD7AB1} {118E40C4-323E-4B4B-8EF4-38EED6CC5E83} = {54990D5E-CE09-459F-916E-AF13101765B4} + {A5A14A71-5DB3-4495-92F6-8D27C98FF0F4} = {BC6859FB-B61C-471D-9F84-613E5C388C52} EndGlobalSection EndGlobal From 6722c9c7e058d68856b519264db7d552db1f74f5 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:20:15 -0400 Subject: [PATCH 11/16] Do not load languages if they don't exist (to prevent crash) --- .../UniversalEditor.UserInterface/Engine.cs | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs index a0c2d459..216bc7e2 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Engine.cs @@ -511,18 +511,21 @@ namespace UniversalEditor.UserInterface UpdateSplashScreenStatus("Loading languages and translations"); MarkupTagElement tagLanguages = (mvarRawMarkup.FindElement("UniversalEditor", "Application", "Languages") as MarkupTagElement); - foreach (MarkupElement elLanguage in tagLanguages.Elements) + if (tagLanguages != null) { - MarkupTagElement tagLanguage = (elLanguage as MarkupTagElement); - if (tagLanguage == null) continue; - if (tagLanguage.FullName != "Language") continue; - InitializeLanguage(tagLanguage); - } + foreach (MarkupElement elLanguage in tagLanguages.Elements) + { + MarkupTagElement tagLanguage = (elLanguage as MarkupTagElement); + if (tagLanguage == null) continue; + if (tagLanguage.FullName != "Language") continue; + InitializeLanguage(tagLanguage); + } - MarkupAttribute attDefaultLanguageID = tagLanguages.Attributes["DefaultLanguageID"]; - if (attDefaultLanguageID != null) - { - mvarDefaultLanguage = mvarLanguages[attDefaultLanguageID.Value]; + MarkupAttribute attDefaultLanguageID = tagLanguages.Attributes["DefaultLanguageID"]; + if (attDefaultLanguageID != null) + { + mvarDefaultLanguage = mvarLanguages[attDefaultLanguageID.Value]; + } } #endregion From f6bdb168a442cd461b7117236c9fe63532f4e29c Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:20:52 -0400 Subject: [PATCH 12/16] Only associate shortcut keys with menu items (to prevent conflicts) --- .../MainWindow.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs b/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs index 69616ebd..2e114bdf 100644 --- a/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs +++ b/CSharp/Engines/WindowsForms/Engines/UniversalEditor.UserInterface.WindowsForms.DesktopApplication/MainWindow.cs @@ -140,7 +140,6 @@ namespace UniversalEditor.UserInterface.WindowsForms else { ToolStripMenuItem tsmi = new ToolStripMenuItem(); - tsmi.ShortcutKeys = ShortcutKeyToWinFormsKeys(cmd.ShortcutKey); tsi = tsmi; } @@ -168,7 +167,6 @@ namespace UniversalEditor.UserInterface.WindowsForms else { tsi = new ToolStripMenuItem(); - (tsi as ToolStripMenuItem).ShortcutKeys = ShortcutKeyToWinFormsKeys(cmd.ShortcutKey); } tsi.Tag = cmd; tsi.Text = cmd.Title.Replace("_", "&"); @@ -253,6 +251,7 @@ namespace UniversalEditor.UserInterface.WindowsForms tsmi.Click += tsmiCommand_Click; tsmi.Tag = cmd; tsmi.Text = cmd.Title.Replace("_", "&"); + tsmi.ShortcutKeys = ShortcutKeyToWinFormsKeys(cmd.ShortcutKey); foreach (CommandItem item1 in cmd.Items) { LoadCommandBarMenuItem(item1, tsmi); From 936bce384fbf033d99dce528beb3375af0be0a0c Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:24:39 -0400 Subject: [PATCH 13/16] No need to include Project directory in content --- .../Projects/PHPProject1/PHPProject1.uesln | 11 -------- .../PHPProject1/PHPProject1.ueproj | 25 ------------------- .../Projects/SFX1/SFX1.xml | 9 ------- 3 files changed, 45 deletions(-) delete mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln delete mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj delete mode 100644 CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln deleted file mode 100644 index 3d3faa82..00000000 --- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1.uesln +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj deleted file mode 100644 index 624d92e7..00000000 --- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/PHPProject1/PHPProject1/PHPProject1.ueproj +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - Application Development - Websites - PHP - - - - - - ]]> - - - - - \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml deleted file mode 100644 index 2df35a0d..00000000 --- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Projects/SFX1/SFX1.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - Universal Editor 3 - - - - \ No newline at end of file From e704e48cb78224204b12cd3f69fc295a58af7a87 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:27:13 -0400 Subject: [PATCH 14/16] No need to include Project directory in content --- .../UniversalEditor.Content.PlatformIndependent.csproj | 3 --- 1 file changed, 3 deletions(-) diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj index 43c03b51..4a492d1d 100644 --- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj @@ -81,7 +81,6 @@ - @@ -122,8 +121,6 @@ - - From 1a91003ebc0bfa3e1d1e6c01a80099f3b4f5bc5f Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:47:49 -0400 Subject: [PATCH 15/16] Updated README.md with more useful information --- CSharp/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CSharp/README.md b/CSharp/README.md index b78f36b9..44352529 100644 --- a/CSharp/README.md +++ b/CSharp/README.md @@ -2,3 +2,27 @@ UniversalEditor =============== A free, cross-platform modular data manipulation framework. + +Prerequisites +------------- +* Glue (if building UserInterface) +* Sanjigen (if building Multimedia3D plugin) +* AwesomeControls (if building Windows Forms Engine) +* Surodoine (if building Windows Forms Engine) + +Customization and Branding +-------------------------- +To customize Universal Editor, look in the Content folder in the UniversalEditor.Content.PlatformIndependent project. All folders included within this project will be copied to the Output folder upon build. + +* The *Branding* folder contains the application icon (on Windows) and image used for the splash screen. In the future the splash screen will have additional customization options, including the ability to modify parts of the splash screen (such as progress bars and status labels) using only configuration files. +* The *Configuration* folder contains XML files that are used to configure various properties of the software (although XML configuration files are actually read from anywhere in the application Output directory). +* The *Editors* folder contains editor-specific, platform-independent resources. You should not need to touch these unless you want to change the appearance of a particular editor (for example, providing different icons for folders in the FileSystem editor). + +Translating the Software +------------------------ +The *Languages* folder contains language translation string tables. The easiest way to translate the software is to copy the English.xml, translate all the strings, save it as a new language, and set it as the default language by specifying the DefaultLanguageID attribute on the UniversalEditor/Application/Languages element. Currently there is no way to change/save/load the default language at runtime, but that is trivial to implement and should be arriving shortly. + +Project Types and Templates +--------------------------- +* The *ProjectTypes* folder contains project type definitions. In the future it will be possible to provide project types via compiled assemblies (DLLs) and gain more control over the project process. ProjectTypes usually define build tasks that can be selected for each file in the project (for example, Compile/Content/EmbeddedResource) and provide other customization options. +* The *Templates* folder contains template definitions. \ No newline at end of file From 4fc5b37eb17f89389d2c9f2ad56b7f8a9edacd60 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Fri, 18 Jul 2014 15:51:45 -0400 Subject: [PATCH 16/16] Updated README.md with more useful information --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b78f36b9..dc7d119a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,16 @@ UniversalEditor =============== -A free, cross-platform modular data manipulation framework. +A free, cross-platform modular data manipulation framework. For more details about a particular edition, if available, visit that edition's particular folder. + +C +- +A native implementation of the Universal Editor Platform. This is currently not being worked on in favor of the managed CSharp and hosted PHP editions. + +CSharp +------ +The flagship edition of the Universal Editor Platform. Written in C# (of course) it is cross-platform and works well with Windows (on Microsoft .NET Framework) and Linux (on Mono) operating systems. + +PHP +--- +The source code for the hosted edition of the Universal Editor Platform (still a work in progress). \ No newline at end of file