diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Controls/ItemListBox.glade b/Content/UniversalEditor.Content.PlatformIndependent/Controls/ItemListBox.glade new file mode 100644 index 00000000..4327a355 --- /dev/null +++ b/Content/UniversalEditor.Content.PlatformIndependent/Controls/ItemListBox.glade @@ -0,0 +1,148 @@ + + + + + + False + + + + + + True + False + vertical + + + True + False + + + True + False + _Add + True + gtk-add + + + False + True + + + + + True + False + _Edit + True + gtk-edit + + + False + True + + + + + True + False + _Remove + True + gtk-remove + + + False + True + + + + + True + False + + + False + True + + + + + True + False + Move _Up + True + gtk-go-up + + + False + True + + + + + True + False + Move _Down + True + gtk-go-down + + + False + True + + + + + True + False + + + False + True + + + + + True + False + Remove All + True + gtk-clear + + + False + True + + + + + False + True + 0 + + + + + True + True + in + + + True + True + + + + + + + + True + True + 1 + + + + + + diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Blockchain/BlockchainEditor.glade b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Blockchain/BlockchainEditor.glade new file mode 100644 index 00000000..7461d537 --- /dev/null +++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Blockchain/BlockchainEditor.glade @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + False + + + + + + True + False + vertical + + + True + True + in + + + True + True + tm + + + + + + True + Version + True + True + + + + 0 + + + + + + + True + Previous Block Hash + True + True + + + + 1 + + + + + + + True + Merkel Root + True + True + + + + 2 + + + + + + + True + Timestamp + True + True + + + + 3 + + + + + + + + + True + True + 0 + + + + + + diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/FileSystemEditor_WithToolbarLikeWinZip.glade b/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/FileSystemEditor_WithToolbarLikeWinZip.glade new file mode 100644 index 00000000..e8a1e57e --- /dev/null +++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/FileSystem/FileSystemEditor_WithToolbarLikeWinZip.glade @@ -0,0 +1,354 @@ + + + + + + True + False + 8 + 8 + 8 + 8 + gtk-add + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-dialog-authentication + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-save-as + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-directory + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-execute + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-new + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-open + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-find + 6 + + + True + False + 8 + 8 + 8 + 8 + gtk-preferences + 6 + + + False + + + True + False + vertical + + + True + False + + + New + True + True + True + icoNew + none + top + True + + + False + True + 0 + + + + + Open + True + True + True + icoOpen + none + top + True + + + False + True + 1 + + + + + Favorites + True + True + True + icoFavorites + none + top + True + + + False + True + 2 + + + + + Add + True + True + True + icoAdd + none + top + True + + + False + True + 3 + + + + + Extract + True + True + True + icoExtract + none + top + True + + + False + True + 4 + + + + + Encrypt + True + True + True + icoEncrypt + none + top + True + + + False + True + 5 + + + + + View + True + True + True + icoView + none + top + True + + + False + True + 6 + + + + + Install + True + True + True + icoInstall + none + top + True + + + False + True + 7 + + + + + Wizard + True + True + True + icoWizard + none + top + True + + + False + True + 8 + + + + + False + True + 16 + 0 + + + + + True + True + tm + 0 + + + + + + True + Name + True + True + + + + 0 + + + + + + + True + Size + True + True + + + + 1 + + + + + + + True + Type + True + True + + + + 2 + + + + + + + True + Date modified + True + True + + + + 3 + + + + + + + True + True + 1 + + + + + + + + + + + + + + + + + + diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia/Audio/Waveform/Commands.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia/Audio/Waveform/Commands.uexml new file mode 100644 index 00000000..a16070ca --- /dev/null +++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Multimedia/Audio/Waveform/Commands.uexml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Editors/Shortcut/ShortcutEditor.glade b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Shortcut/ShortcutEditor.glade new file mode 100644 index 00000000..ac756962 --- /dev/null +++ b/Content/UniversalEditor.Content.PlatformIndependent/Editors/Shortcut/ShortcutEditor.glade @@ -0,0 +1,194 @@ + + + + + + + + + + + + Local file/directory + + + Shell namespace extension + + + + + False + + + + + + True + False + + + True + False + stack1 + + + False + True + 0 + + + + + True + False + + + True + False + + + 100 + 80 + True + True + + + True + False + + + True + False + 8 + 8 + 8 + 8 + Target _type + True + 1 + + + False + True + 0 + + + + + True + False + lsShortcutTargetType + + + + 0 + + + + + True + True + 1 + + + + + + + + + 100 + 80 + True + True + + + True + False + + + True + False + Target + + + True + True + 0 + + + + + True + True + + + True + True + 1 + + + + + _Browse... + True + True + True + True + + + False + True + 2 + + + + + + + + + 100 + 80 + True + True + + + + + + + + 100 + 80 + True + True + + + + + + + + page0 + General + document-properties + + + + + + + + + + + True + True + 1 + + + + + + diff --git a/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj index aad50283..4cd9ccba 100644 --- a/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj +++ b/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj @@ -315,6 +315,7 @@ + diff --git a/Extensions/UniversalEditor.Extensions.Sony/Templates/Project/SCE.PSM.BasicProject.uetx b/Extensions/UniversalEditor.Extensions.Sony/Templates/Project/SCE.PSM.BasicProject.uetx new file mode 100644 index 00000000..d96c71b3 Binary files /dev/null and b/Extensions/UniversalEditor.Extensions.Sony/Templates/Project/SCE.PSM.BasicProject.uetx differ diff --git a/Extensions/UniversalEditor.Extensions.Sony/UniversalEditor.Extensions.Sony.csproj b/Extensions/UniversalEditor.Extensions.Sony/UniversalEditor.Extensions.Sony.csproj new file mode 100644 index 00000000..9dc32e9f --- /dev/null +++ b/Extensions/UniversalEditor.Extensions.Sony/UniversalEditor.Extensions.Sony.csproj @@ -0,0 +1,52 @@ + + + + + Debug + AnyCPU + {D28CBD31-EE2D-47DE-9305-3FD5AFB43FB2} + Library + Properties + UniversalEditor.Extensions.Sony + UniversalEditor.Extensions.Sony + v4.0 + 512 + + true + ..\..\..\..\Production.snk + 4.0.2019.12 + + + true + full + false + ..\..\Output\Debug\Extensions + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + ..\..\Output\Release\Extensions + TRACE + prompt + 4 + + + + + + + + + + + diff --git a/NTFSAlternativeStreamReader.cs b/NTFSAlternativeStreamReader.cs new file mode 100755 index 00000000..2fa7c28e --- /dev/null +++ b/NTFSAlternativeStreamReader.cs @@ -0,0 +1,74 @@ +// one line to give the program's name and an idea of what it does. +// Copyright (C) yyyy name of author +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +using System; +using System.Runtime.InteropServices; + +namespace ExtensibleDataStorage +{ + /// + /// Description of NTFSAlternativeStreamReader. + /// + public class NTFSAlternativeStreamReader + { + /* + [DllImport("ntoskrnl.exe")] + private static extern int NtQueryInformationFile(IntPtr handle, ref IO_STATUS_BLOCK IoStatusBlock, ref FILE_STREAM_INFORMATION[] FileInformation, ulong length, FILE_INFORMATION_CLASS FileInformationClass); + [DllImport("kernel32.dll")] + private static extern IntPtr CreateFile(string lpFileName, int dwDesiredAccess, int dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, IntPtr hTemplateFile); + */ + + public static string[] EnumerateStreamNames(string path) + { + string[] val = new string[] { }; + if (System.Environment.OSVersion.Platform == PlatformID.MacOSX) + { + + } + else if (System.Environment.OSVersion.Platform == PlatformID.Unix) + { + + } + else if (System.Environment.OSVersion.Platform == PlatformID.Xbox) + { + + } + else + { + /* + // Open a file and obtain stream information + PFILE_STREAM_INFORMATION[] pStreamInfo = new FILE_STREAM_INFORMATION[] { }; + IO_STATUS_BLOCK ioStatus; + + HANDLE hFile = CreateFile(szPath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, 0, NULL); + NtQueryInformationFile(hFile, ref ioStatus, ref pStreamInfo, sizeof(FILE_STREAM_INFORMATION), FILE_INFORMATION_CLASS.FileStreamInformation); + CloseHandle(hFile); + + while(true) + { + // Get null-terminated stream name + string szStreamName = pStreamInfo.StreamName; + + if (pStreamInfo.NextEntryOffset == 0) break; // No more stream records + } + */ + } + return val; + } + } +} diff --git a/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/BlockchainEditor.cs b/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/BlockchainEditor.cs new file mode 100644 index 00000000..13fa0b73 --- /dev/null +++ b/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/BlockchainEditor.cs @@ -0,0 +1,81 @@ +// +// MyClass.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System; +using MBS.Framework.UserInterface; +using MBS.Framework.UserInterface.Controls.ListView; +using UniversalEditor.Plugins.Blockchain.Bitcoin.ObjectModels; +using UniversalEditor.UserInterface; + +namespace UniversalEditor.Plugins.Blockchain.UserInterface +{ + [ContainerLayout("~/Editors/Blockchain/BlockchainEditor.glade")] + public class BlockchainEditor : Editor + { + private ListViewControl tv; + + private static EditorReference _er = null; + public override EditorReference MakeReference() + { + if (_er == null) + { + _er = base.MakeReference(); + _er.SupportedObjectModels.Add(typeof(BitcoinBlockchainObjectModel)); + } + return _er; + } + + protected override void OnCreated(EventArgs e) + { + base.OnCreated(e); + OnObjectModelChanged(e); + } + + protected override void OnObjectModelChanged(EventArgs e) + { + base.OnObjectModelChanged(e); + + BitcoinBlockchainObjectModel bc = (ObjectModel as BitcoinBlockchainObjectModel); + if (bc == null) return; + + if (!IsCreated) return; + + for (int i = 0; i < Math.Min(6500, bc.Blocks.Count); i++) + { + tv.Model.Rows.Add(new TreeModelRow(new TreeModelRowColumn[] + { + new TreeModelRowColumn(tv.Model.Columns[0], bc.Blocks[i].Version.ToString()), + new TreeModelRowColumn(tv.Model.Columns[1], bc.Blocks[i].PreviousBlockHash.ToString()), + new TreeModelRowColumn(tv.Model.Columns[2], bc.Blocks[i].MerkelRoot.ToString()), + new TreeModelRowColumn(tv.Model.Columns[3], bc.Blocks[i].Timestamp.ToString()) + })); + } + } + + public override void UpdateSelections() + { + } + + protected override Selection CreateSelectionInternal(object content) + { + return null; + } + } +} diff --git a/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/Properties/AssemblyInfo.cs b/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..3eedb02b --- /dev/null +++ b/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/Properties/AssemblyInfo.cs @@ -0,0 +1,46 @@ +// +// AssemblyInfo.cs +// +// Author: +// Michael Becker +// +// Copyright (c) 2020 Mike Becker's Software +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("UniversalEditor.Plugins.Blockchain.UserInterface")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Mike Becker's Software")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("Mike Becker's Software")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface.csproj b/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface.csproj new file mode 100644 index 00000000..9f67233d --- /dev/null +++ b/Plugins.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface/UniversalEditor.Plugins.Blockchain.UserInterface.csproj @@ -0,0 +1,60 @@ + + + + Debug + AnyCPU + {B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3} + Library + UniversalEditor.Plugins.Blockchain.UserInterface + UniversalEditor.Plugins.Blockchain.UserInterface + v4.7 + 4.0.2019.12 + + + true + full + false + ..\..\Output\Debug\Plugins + DEBUG; + prompt + 4 + false + + + true + ..\..\Output\Release\Plugins + prompt + 4 + false + + + + + + + + + + + {2D4737E6-6D95-408A-90DB-8DFF38147E85} + UniversalEditor.Core + + + {30467E5C-05BC-4856-AADC-13906EF4CADD} + UniversalEditor.Essential + + + {8622EBC4-8E20-476E-B284-33D472081F5C} + UniversalEditor.UserInterface + + + {00266B21-35C9-4A7F-A6BA-D54D7FDCC25C} + MBS.Framework + + + {29E1C1BB-3EA5-4062-B62F-85EEC703FE07} + MBS.Framework.UserInterface + + + + \ No newline at end of file diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Associations/BitcoinBlockchain.uexml b/Plugins/UniversalEditor.Plugins.Blockchain/Associations/BitcoinBlockchain.uexml new file mode 100644 index 00000000..a66ed7bc --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Associations/BitcoinBlockchain.uexml @@ -0,0 +1,22 @@ + + + + + + + + + F9BEB4D9 + + + + + + + + + + + + + \ No newline at end of file diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/DataFormats/BitcoinBlockchainDataFormat.cs b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/DataFormats/BitcoinBlockchainDataFormat.cs new file mode 100644 index 00000000..bcab7c9b --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/DataFormats/BitcoinBlockchainDataFormat.cs @@ -0,0 +1,98 @@ +using System; +using UniversalEditor.IO; +using UniversalEditor.Plugins.Blockchain.Bitcoin.ObjectModels; + +namespace UniversalEditor.Plugins.Blockchain.Bitcoin.DataFormats +{ + public class BitcoinBlockchainDataFormat : DataFormat + { + private static DataFormatReference _dfr = null; + protected override DataFormatReference MakeReferenceInternal() + { + if (_dfr == null) + { + _dfr = base.MakeReferenceInternal(); + _dfr.Capabilities.Add(typeof(BitcoinBlockchainObjectModel), DataFormatCapabilities.All); + } + return _dfr; + } + + public int HashLength { get; set; } = 32; + + private readonly DateTime UNIX_EPOCH = new DateTime(1970, 01, 01, 00, 00, 00); + + protected override void LoadInternal(ref ObjectModel objectModel) + { + BitcoinBlockchainObjectModel blockchain = (objectModel as BitcoinBlockchainObjectModel); + if (blockchain == null) + throw new ObjectModelNotSupportedException(); + + Reader reader = Accessor.Reader; + + while (!reader.EndOfStream) + { + uint signature = reader.ReadUInt32(); + if (signature != 0xD9B4BEF9) + throw new InvalidDataFormatException("file does not begin with 0xD9B4BEF9"); + + BitcoinBlock block = new BitcoinBlock(); + uint datasize = reader.ReadUInt32(); + block.Version = reader.ReadUInt32(); + block.PreviousBlockHash = reader.ReadBytes(HashLength); + block.MerkelRoot = reader.ReadBytes(HashLength); + uint timestamp = reader.ReadUInt32(); + block.Timestamp = UNIX_EPOCH.AddSeconds(timestamp); + block.Bits = reader.ReadUInt32(); + block.Nonce = reader.ReadUInt32(); + ulong transactionCount = ReadCompactNumber(reader); + for (ulong i = 0; i < transactionCount; i++) + { + BitcoinBlockTransaction transaction = new BitcoinBlockTransaction(); + uint transactionVersion = reader.ReadUInt32(); + ulong inputs = ReadCompactNumber(reader); + for (ulong j = 0; j < inputs; j++) + { + byte[] previousOutput = reader.ReadBytes(HashLength); + uint previousOutput2 = reader.ReadUInt32(); + ulong scriptLength = ReadCompactNumber(reader); + byte[] scriptData = reader.ReadBytes(scriptLength); + uint sequence = reader.ReadUInt32(); + } + byte outputs = reader.ReadByte(); + for (int j = 0; j < outputs; j++) + { + ulong output_c = reader.ReadUInt64(); + ulong publicKeyScriptLength = ReadCompactNumber(reader); + transaction.PublicKeyScript = reader.ReadBytes(publicKeyScriptLength); + } + uint locktime = reader.ReadUInt32(); + block.Transactions.Add(transaction); + } + blockchain.Blocks.Add(block); + } + } + + private ulong ReadCompactNumber(Reader reader) + { + byte num = reader.ReadByte(); + if (num == 0xFD) + { + return reader.ReadUInt16(); + } + else if (num == 0xFE) + { + return reader.ReadUInt32(); + } + else if (num == 0xFF) + { + return reader.ReadUInt64(); + } + return num; + } + + protected override void SaveInternal(ObjectModel objectModel) + { + throw new NotImplementedException(); + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlock.cs b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlock.cs new file mode 100644 index 00000000..9f84b555 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlock.cs @@ -0,0 +1,27 @@ +using System; +namespace UniversalEditor.Plugins.Blockchain.Bitcoin.ObjectModels +{ + public class BitcoinBlock : Block + { + public class BitcoinBlockCollection + : System.Collections.ObjectModel.Collection + { + + } + + public uint Version { get; internal set; } + public byte[] PreviousBlockHash { get; set; } + public byte[] MerkelRoot { get; set; } + public DateTime Timestamp { get; set; } + public uint Bits { get; set; } + public uint Nonce { get; set; } + public BitcoinBlockTransaction.BitcoinBlockTransactionCollection Transactions { get; } = new BitcoinBlockTransaction.BitcoinBlockTransactionCollection(); + + public override object Clone() + { + BitcoinBlock clone = new BitcoinBlock(); + clone.Version = Version; + return clone; + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlockTransaction.cs b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlockTransaction.cs new file mode 100644 index 00000000..d38b1022 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlockTransaction.cs @@ -0,0 +1,20 @@ +using System; +namespace UniversalEditor.Plugins.Blockchain.Bitcoin.ObjectModels +{ + public class BitcoinBlockTransaction : BlockTransaction + { + public byte[] PublicKeyScript { get; set; } + + public class BitcoinBlockTransactionCollection + : System.Collections.ObjectModel.Collection + { + + } + + public override object Clone() + { + BitcoinBlockTransaction clone = new BitcoinBlockTransaction(); + return clone; + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlockchainObjectModel.cs b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlockchainObjectModel.cs new file mode 100644 index 00000000..56557640 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Bitcoin/ObjectModels/BitcoinBlockchainObjectModel.cs @@ -0,0 +1,36 @@ +using System; +namespace UniversalEditor.Plugins.Blockchain.Bitcoin.ObjectModels +{ + public class BitcoinBlockchainObjectModel : ObjectModel + { + private static ObjectModelReference _omr = null; + protected override ObjectModelReference MakeReferenceInternal() + { + if (_omr == null) + { + _omr = base.MakeReferenceInternal(); + _omr.Path = new string[] { "Blockchain", "Bitcoin" }; + } + return _omr; + } + + public BitcoinBlock.BitcoinBlockCollection Blocks { get; } = new BitcoinBlock.BitcoinBlockCollection(); + + public override void Clear() + { + Blocks.Clear(); + } + + public override void CopyTo(ObjectModel where) + { + BitcoinBlockchainObjectModel clone = (where as BitcoinBlockchainObjectModel); + if (clone == null) + throw new ObjectModelNotSupportedException(); + + for (int i = 0; i < Blocks.Count;i++) + { + clone.Blocks.Add(Blocks[i].Clone() as BitcoinBlock); + } + } + } +} diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Block.cs b/Plugins/UniversalEditor.Plugins.Blockchain/Block.cs new file mode 100644 index 00000000..52b5d1a6 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Block.cs @@ -0,0 +1,8 @@ +using System; +namespace UniversalEditor.Plugins.Blockchain +{ + public abstract class Block : ICloneable + { + public abstract object Clone(); + } +} diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/BlockTransaction.cs b/Plugins/UniversalEditor.Plugins.Blockchain/BlockTransaction.cs new file mode 100644 index 00000000..aa6f8f38 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/BlockTransaction.cs @@ -0,0 +1,8 @@ +using System; +namespace UniversalEditor.Plugins.Blockchain +{ + public abstract class BlockTransaction : ICloneable + { + public abstract object Clone(); + } +} diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/Properties/AssemblyInfo.cs b/Plugins/UniversalEditor.Plugins.Blockchain/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..197fe9ee --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("UniversalEditor.Plugins.Blockchain")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Mike Becker's Software")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("Mike Becker's Software")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/Plugins/UniversalEditor.Plugins.Blockchain/UniversalEditor.Plugins.Blockchain.csproj b/Plugins/UniversalEditor.Plugins.Blockchain/UniversalEditor.Plugins.Blockchain.csproj new file mode 100644 index 00000000..cfb14715 --- /dev/null +++ b/Plugins/UniversalEditor.Plugins.Blockchain/UniversalEditor.Plugins.Blockchain.csproj @@ -0,0 +1,58 @@ + + + + Debug + AnyCPU + {C54F6BCD-60CD-4603-B0C9-CD0864455CB1} + Library + UniversalEditor.Plugins.Blockchain + UniversalEditor.Plugins.Blockchain + v4.7 + 4.0.2019.12 + + + true + full + false + ..\..\Output\Debug\Plugins + DEBUG; + prompt + 4 + false + + + true + ..\..\Output\Release\Plugins + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + + {2D4737E6-6D95-408A-90DB-8DFF38147E85} + UniversalEditor.Core + + + + + + + \ No newline at end of file diff --git a/UniversalEditor.sln b/UniversalEditor.sln index 38ca4933..ab8d8488 100644 --- a/UniversalEditor.sln +++ b/UniversalEditor.sln @@ -211,6 +211,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Mul EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MBS.Audio", "..\MBS.Audio\MBS.Audio\MBS.Audio.csproj", "{E0897B7B-617A-4709-A4C6-FC0F6B441B2A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Blockchain", "Plugins\UniversalEditor.Plugins.Blockchain\UniversalEditor.Plugins.Blockchain.csproj", "{C54F6BCD-60CD-4603-B0C9-CD0864455CB1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalEditor.Plugins.Blockchain.UserInterface", "Plugins.UserInterface\UniversalEditor.Plugins.Blockchain.UserInterface\UniversalEditor.Plugins.Blockchain.UserInterface.csproj", "{B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -607,6 +611,14 @@ Global {E0897B7B-617A-4709-A4C6-FC0F6B441B2A}.Debug|Any CPU.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 + {C54F6BCD-60CD-4603-B0C9-CD0864455CB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C54F6BCD-60CD-4603-B0C9-CD0864455CB1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C54F6BCD-60CD-4603-B0C9-CD0864455CB1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C54F6BCD-60CD-4603-B0C9-CD0864455CB1}.Release|Any CPU.Build.0 = Release|Any CPU + {B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {6F0AB1AF-E1A1-4D19-B19C-05BBB15C94B2} = {05D15661-E684-4EC9-8FBD-C014BA433CC5} @@ -706,6 +718,8 @@ Global {37504ECC-D87F-4E93-8E08-89C03BAAA6D9} = {2ED32D16-6C06-4450-909A-40D32DA67FB4} {75C99631-122C-4880-806E-646FCB021730} = {7B535D74-5496-4802-B809-89ED88274A91} {E0897B7B-617A-4709-A4C6-FC0F6B441B2A} = {20F315E0-52AE-479F-AF43-3402482C1FC8} + {C54F6BCD-60CD-4603-B0C9-CD0864455CB1} = {2ED32D16-6C06-4450-909A-40D32DA67FB4} + {B6E600F5-E5BC-4DC2-8B41-7B11EB0A11B3} = {7B535D74-5496-4802-B809-89ED88274A91} EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 diff --git a/after.UniversalEditor.sln.targets b/after.UniversalEditor.sln.targets new file mode 100644 index 00000000..2f5974ad --- /dev/null +++ b/after.UniversalEditor.sln.targets @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/universal-editor.svg b/universal-editor.svg new file mode 100644 index 00000000..84dc0696 --- /dev/null +++ b/universal-editor.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + +