diff --git a/samples/PixiEditorExtensionSamples.sln b/samples/PixiEditorExtensionSamples.sln index 1f4c38cc1..b62328642 100644 --- a/samples/PixiEditorExtensionSamples.sln +++ b/samples/PixiEditorExtensionSamples.sln @@ -25,6 +25,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample8_Commands", "Sample8 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample8_CommandLibrary", "Sample8_CommandLibrary\Sample8_CommandLibrary.csproj", "{3559A288-DF82-4429-B23C-CFF9E55B372E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample9_Document", "Sample9_Document\Sample9_Document.csproj", "{E018D2C3-2DD7-4BC7-AAAF-91DA949789E4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -74,6 +76,10 @@ Global {3559A288-DF82-4429-B23C-CFF9E55B372E}.Debug|Any CPU.Build.0 = Debug|Any CPU {3559A288-DF82-4429-B23C-CFF9E55B372E}.Release|Any CPU.ActiveCfg = Release|Any CPU {3559A288-DF82-4429-B23C-CFF9E55B372E}.Release|Any CPU.Build.0 = Release|Any CPU + {E018D2C3-2DD7-4BC7-AAAF-91DA949789E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E018D2C3-2DD7-4BC7-AAAF-91DA949789E4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E018D2C3-2DD7-4BC7-AAAF-91DA949789E4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E018D2C3-2DD7-4BC7-AAAF-91DA949789E4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {FD9B4C32-4D2E-410E-BC6B-787779BEB6E2} = {7CC35BC4-829F-4EF4-8EB6-E1D46206E7DC} diff --git a/samples/Sample7_FlyUI/WindowContentElement.cs b/samples/Sample7_FlyUI/WindowContentElement.cs index 985ab2275..eec1be6a9 100644 --- a/samples/Sample7_FlyUI/WindowContentElement.cs +++ b/samples/Sample7_FlyUI/WindowContentElement.cs @@ -7,13 +7,20 @@ using PixiEditor.Extensions.Sdk.Api.Window; namespace FlyUISample; -[SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1118:Parameter should not span multiple lines", Justification = "FlyUI style")] +[SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1118:Parameter should not span multiple lines", + Justification = "FlyUI style")] public class WindowContentElement : StatelessElement { public PopupWindow Window { get; set; } public override ControlDefinition BuildNative() { + SizeInputField field = new SizeInputField(); + field.SizeChanged += args => + { + PixiEditorExtension.Api.Logger.Log(field.Value.ToString()); + }; + Layout layout = new Layout(body: new Container(margin: Edges.All(25), child: new Column( @@ -29,7 +36,8 @@ public class WindowContentElement : StatelessElement ), new Align( alignment: Alignment.CenterRight, - child: new Text("- Paulo Coelho, The Alchemist (1233)", textStyle: new TextStyle(fontStyle: FontStyle.Italic)) + child: new Text("- Paulo Coelho, The Alchemist (1233)", + textStyle: new TextStyle(fontStyle: FontStyle.Italic)) ), new Container( margin: Edges.Symmetric(25, 0), @@ -47,6 +55,7 @@ public class WindowContentElement : StatelessElement ? "Checked" : "Unchecked"); }), + field, new Center( new Button( child: new Text("Close"), onClick: _ => { Window.Close(); })) @@ -57,5 +66,4 @@ public class WindowContentElement : StatelessElement return layout.BuildNative(); } - } \ No newline at end of file diff --git a/samples/Sample9_Document/CommandsSampleExtension.cs b/samples/Sample9_Document/CommandsSampleExtension.cs new file mode 100644 index 000000000..91d900d64 --- /dev/null +++ b/samples/Sample9_Document/CommandsSampleExtension.cs @@ -0,0 +1,24 @@ +using PixiEditor.Extensions.CommonApi.Commands; +using PixiEditor.Extensions.Sdk; + +namespace Sample9_Commands; + +public class CommandsSampleExtension : PixiEditorExtension +{ + /// + /// This method is called when extension is loaded. + /// All extensions are first loaded and then initialized. This method is called before . + /// + public override void OnLoaded() + { + } + + /// + /// This method is called when extension is initialized. After this method is called, you can use Api property to access PixiEditor API. + /// + public override void OnInitialized() + { + var doc = Api.Documents.ImportFile("Resources/cs.png", true); // Open file from the extension resources + doc?.Resize(128, 128); // Resizes whole document + } +} \ No newline at end of file diff --git a/samples/Sample9_Document/Program.cs b/samples/Sample9_Document/Program.cs new file mode 100644 index 000000000..24b96b2e0 --- /dev/null +++ b/samples/Sample9_Document/Program.cs @@ -0,0 +1,8 @@ +namespace Sample9_Commands; + +public static class Program +{ + public static void Main() + { + } +} \ No newline at end of file diff --git a/samples/Sample9_Document/Resources/cs.png b/samples/Sample9_Document/Resources/cs.png new file mode 100644 index 000000000..518a64bc0 Binary files /dev/null and b/samples/Sample9_Document/Resources/cs.png differ diff --git a/samples/Sample9_Document/Sample9_Document.csproj b/samples/Sample9_Document/Sample9_Document.csproj new file mode 100644 index 000000000..171adb632 --- /dev/null +++ b/samples/Sample9_Document/Sample9_Document.csproj @@ -0,0 +1,45 @@ + + + + net8.0 + wasi-wasm + Exe + true + true + true + ..\..\src\PixiEditor.Desktop\bin\Debug\net8.0\Extensions + false + false + Sample9_Commands + + + + + + + + + + + PreserveNewest + + + + + + PreserveNewest + + + + + + PreserveNewest + + + + + + + + + diff --git a/samples/Sample9_Document/extension.json b/samples/Sample9_Document/extension.json new file mode 100644 index 000000000..6433016c0 --- /dev/null +++ b/samples/Sample9_Document/extension.json @@ -0,0 +1,44 @@ +{ + "displayName": "Sample Extension - Document", + "uniqueName": "yourCompany.Samples.Document", + "description": "Sample Document extension for PixiEditor", + "version": "1.0.0", + "localization": { + "languages": [ + { + "name": "English", + "code": "en", + "localeFileName": "Localization/en.json" + }, + { + "name": "Polish", + "code": "pl", + "localeFileName": "Localization/pl.json" + } + ] + }, + "author": { + "name": "PixiEditor", + "email": "info@pixieditor.net", + "website": "https://pixieditor.net" + }, + "publisher": { + "name": "PixiEditor", + "email": "info@pixieditor.net", + "website": "https://pixieditor.net" + }, + "contributors": [ + { + "name": "flabbet", + "email": "some@mail.com", + "website": "https://github.com/flabbet" + } + ], + "license": "MIT", + "categories": [ + "Extension" + ], + "permissions": [ + "OpenDocuments" + ] +} \ No newline at end of file diff --git a/src/PixiEditor.Browser/Program.cs b/src/PixiEditor.Browser/Program.cs index c467359ac..d5cf3031d 100644 --- a/src/PixiEditor.Browser/Program.cs +++ b/src/PixiEditor.Browser/Program.cs @@ -2,10 +2,11 @@ using System.Threading.Tasks; using Avalonia; using Avalonia.Browser; -using PixiEditor; [assembly: SupportedOSPlatform("browser")] +namespace PixiEditor.Avalonia.Browser; + internal sealed partial class Program { private static Task Main(string[] args) => BuildAvaloniaApp() @@ -13,4 +14,4 @@ internal sealed partial class Program public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure(); -} +} \ No newline at end of file diff --git a/src/PixiEditor.ChangeableDocument/ChangeInfos/Root/ReferenceLayerChangeInfos/SetReferenceLayer_ChangeInfo.cs b/src/PixiEditor.ChangeableDocument/ChangeInfos/Root/ReferenceLayerChangeInfos/SetReferenceLayer_ChangeInfo.cs index 5b41c6ec2..693d21140 100644 --- a/src/PixiEditor.ChangeableDocument/ChangeInfos/Root/ReferenceLayerChangeInfos/SetReferenceLayer_ChangeInfo.cs +++ b/src/PixiEditor.ChangeableDocument/ChangeInfos/Root/ReferenceLayerChangeInfos/SetReferenceLayer_ChangeInfo.cs @@ -2,6 +2,6 @@ using Drawie.Backend.Core.Numerics; using Drawie.Numerics; -namespace PixiEditor.ChangeableDocument.ChangeInfos.Structure; +namespace PixiEditor.ChangeableDocument.ChangeInfos.Root.ReferenceLayerChangeInfos; public record class SetReferenceLayer_ChangeInfo(ImmutableArray ImagePbgra8888Bytes, VecI ImageSize, ShapeCorners Shape) : IChangeInfo; diff --git a/src/PixiEditor.Desktop/Program.cs b/src/PixiEditor.Desktop/Program.cs index 276205095..03ac8c942 100644 --- a/src/PixiEditor.Desktop/Program.cs +++ b/src/PixiEditor.Desktop/Program.cs @@ -1,7 +1,7 @@ using System; using Avalonia; using Avalonia.Logging; -using Drawie.Interop.VulkanAvalonia; +using Drawie.Interop.Avalonia; namespace PixiEditor.Desktop; diff --git a/src/PixiEditor.Extensions.CommonApi/Documents/IDocument.cs b/src/PixiEditor.Extensions.CommonApi/Documents/IDocument.cs new file mode 100644 index 000000000..1ac1ca77e --- /dev/null +++ b/src/PixiEditor.Extensions.CommonApi/Documents/IDocument.cs @@ -0,0 +1,7 @@ +namespace PixiEditor.Extensions.CommonApi.Documents; + +public interface IDocument +{ + public Guid Id { get; } + public void Resize(int width, int height); +} diff --git a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventArgs.cs b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventArgs.cs index 9c3ab33ba..d91aa32f2 100644 --- a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventArgs.cs +++ b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventArgs.cs @@ -1,12 +1,44 @@ -namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; +using System.Collections; +using PixiEditor.Extensions.CommonApi.Utilities; + +namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; public class ElementEventArgs { - public object Sender { get; set; } - public static ElementEventArgs Empty { get; } = new ElementEventArgs(); + public object Sender { get; set; } + + public static ElementEventArgs Deserialize(byte[] data) + { + if (data == null) return new ElementEventArgs(); + + ByteReader reader = new ByteReader(data); + string eventType = reader.ReadString(); + ElementEventArgs eventArgs = eventType switch // TODO: more generic implementation + { + nameof(ToggleEventArgs) => new ToggleEventArgs(reader.ReadBool()), + nameof(TextEventArgs) => new TextEventArgs(reader.ReadString()), + nameof(NumberEventArgs) => new NumberEventArgs(reader.ReadDouble()), + _ => throw new NotSupportedException($"Event type '{eventType}' is not supported.") + }; + + return eventArgs; + } + + public byte[] Serialize() + { + ByteWriter writer = new ByteWriter(); + writer.WriteString(GetType().Name); + SerializeArgs(writer); + + return writer.ToArray(); + } + + protected virtual void SerializeArgs(ByteWriter writer) + { + // Default implementation does nothing. Override in derived classes to serialize specific properties. + } } public class ElementEventArgs : ElementEventArgs where TEventArgs : ElementEventArgs { - public static new ElementEventArgs Empty { get; } = new ElementEventArgs(); } diff --git a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventHandler.cs b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventHandler.cs index ac141ea6a..bf5dbfe88 100644 --- a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventHandler.cs +++ b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ElementEventHandler.cs @@ -1,4 +1,6 @@ namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; public delegate void ElementEventHandler(ElementEventArgs args); -public delegate void ElementEventHandler(TEventArgs args) where TEventArgs : ElementEventArgs; + +public delegate void ElementEventHandler(TEventArgs args) + where TEventArgs : ElementEventArgs; diff --git a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/NumberEventArgs.cs b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/NumberEventArgs.cs new file mode 100644 index 000000000..698aca09f --- /dev/null +++ b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/NumberEventArgs.cs @@ -0,0 +1,19 @@ +using System.Numerics; +using PixiEditor.Extensions.CommonApi.Utilities; + +namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; + +public class NumberEventArgs : ElementEventArgs +{ + public double Value { get; } + + public NumberEventArgs(double value) + { + Value = value; + } + + protected override void SerializeArgs(ByteWriter writer) + { + writer.WriteDouble(Value); + } +} diff --git a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/TextEventArgs.cs b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/TextEventArgs.cs new file mode 100644 index 000000000..67137a693 --- /dev/null +++ b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/TextEventArgs.cs @@ -0,0 +1,19 @@ +using System.Collections; +using PixiEditor.Extensions.CommonApi.Utilities; + +namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; + +public class TextEventArgs : ElementEventArgs +{ + public string Text { get; set; } + + public TextEventArgs(string newText) + { + Text = newText; + } + + protected override void SerializeArgs(ByteWriter writer) + { + writer.WriteString(Text); + } +} diff --git a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ToggleEventArgs.cs b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ToggleEventArgs.cs index 2d7ac49c4..02f985cf8 100644 --- a/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ToggleEventArgs.cs +++ b/src/PixiEditor.Extensions.CommonApi/FlyUI/Events/ToggleEventArgs.cs @@ -1,4 +1,7 @@ -namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; +using System.Collections; +using PixiEditor.Extensions.CommonApi.Utilities; + +namespace PixiEditor.Extensions.CommonApi.FlyUI.Events; public class ToggleEventArgs : ElementEventArgs { @@ -8,4 +11,9 @@ public class ToggleEventArgs : ElementEventArgs { IsToggled = isToggled; } + + protected override void SerializeArgs(ByteWriter writer) + { + writer.WriteBool(IsToggled); + } } diff --git a/src/PixiEditor.Extensions.CommonApi/IO/IDocumentProvider.cs b/src/PixiEditor.Extensions.CommonApi/IO/IDocumentProvider.cs index 9013d9788..8fd31f7c7 100644 --- a/src/PixiEditor.Extensions.CommonApi/IO/IDocumentProvider.cs +++ b/src/PixiEditor.Extensions.CommonApi/IO/IDocumentProvider.cs @@ -1,6 +1,10 @@ +using PixiEditor.Extensions.CommonApi.Documents; + namespace PixiEditor.Extensions.CommonApi.IO; public interface IDocumentProvider { - public void ImportFile(string path, bool associatePath = true); + public IDocument? ActiveDocument { get; } + public IDocument? ImportFile(string path, bool associatePath = true); + public IDocument? GetDocument(Guid id); } diff --git a/src/PixiEditor.Extensions.CommonApi/Utilities/ByteReader.cs b/src/PixiEditor.Extensions.CommonApi/Utilities/ByteReader.cs new file mode 100644 index 000000000..ac5dcb726 --- /dev/null +++ b/src/PixiEditor.Extensions.CommonApi/Utilities/ByteReader.cs @@ -0,0 +1,62 @@ +namespace PixiEditor.Extensions.CommonApi.Utilities; + +public class ByteReader +{ + private byte[] _buffer; + private int _position; + + public ByteReader(byte[] buffer) + { + _buffer = buffer; + _position = 0; + } + + public byte ReadByte() + { + return _buffer[_position++]; + } + + public string ReadString() + { + int length = ReadInt(); + string result = System.Text.Encoding.UTF8.GetString(_buffer, _position, length); + _position += length; + return result; + } + + public int ReadInt() + { + int result = BitConverter.ToInt32(_buffer, _position); + _position += sizeof(int); + return result; + } + + public float ReadFloat() + { + float result = BitConverter.ToSingle(_buffer, _position); + _position += sizeof(float); + return result; + } + + public bool ReadBool() + { + bool result = BitConverter.ToBoolean(_buffer, _position); + _position += sizeof(bool); + return result; + } + + public byte[] ReadBytes(int length) + { + byte[] result = new byte[length]; + Array.Copy(_buffer, _position, result, 0, length); + _position += length; + return result; + } + + public double ReadDouble() + { + double result = BitConverter.ToDouble(_buffer, _position); + _position += sizeof(double); + return result; + } +} diff --git a/src/PixiEditor.Extensions.CommonApi/Utilities/ByteWriter.cs b/src/PixiEditor.Extensions.CommonApi/Utilities/ByteWriter.cs new file mode 100644 index 000000000..6e5aee0a3 --- /dev/null +++ b/src/PixiEditor.Extensions.CommonApi/Utilities/ByteWriter.cs @@ -0,0 +1,60 @@ +namespace PixiEditor.Extensions.CommonApi.Utilities; + +public class ByteWriter +{ + private List _buffer; + private int _position; + + public ByteWriter() + { + _buffer = new List(); + _position = 0; + } + + public void WriteByte(byte value) + { + _buffer.Add(value); + _position++; + } + + public void WriteString(string value) + { + byte[] stringBytes = System.Text.Encoding.UTF8.GetBytes(value); + WriteInt(stringBytes.Length); + _buffer.AddRange(stringBytes); + } + + public void WriteInt(int value) + { + byte[] intBytes = BitConverter.GetBytes(value); + _buffer.AddRange(intBytes); + } + + public void WriteFloat(float value) + { + byte[] floatBytes = BitConverter.GetBytes(value); + _buffer.AddRange(floatBytes); + } + + public void WriteDouble(double value) + { + byte[] doubleBytes = BitConverter.GetBytes(value); + _buffer.AddRange(doubleBytes); + } + + public void WriteBool(bool value) + { + byte[] boolBytes = BitConverter.GetBytes(value); + _buffer.AddRange(boolBytes); + } + + public void WriteBytes(byte[] value) + { + _buffer.AddRange(value); + } + + public byte[] ToArray() + { + return _buffer.ToArray(); + } +} diff --git a/src/PixiEditor.Extensions.Runtime/ExtensionException.cs b/src/PixiEditor.Extensions.Runtime/ExtensionException.cs index 2251294c6..1ece4578b 100644 --- a/src/PixiEditor.Extensions.Runtime/ExtensionException.cs +++ b/src/PixiEditor.Extensions.Runtime/ExtensionException.cs @@ -1,5 +1,5 @@ -using PixiEditor.Extensions.Common.Localization; -using PixiEditor.Extensions.Exceptions; +using PixiEditor.Extensions.Exceptions; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Extensions.Runtime; diff --git a/src/PixiEditor.Extensions.Sdk/Api/Documents/Document.cs b/src/PixiEditor.Extensions.Sdk/Api/Documents/Document.cs new file mode 100644 index 000000000..f85a29b97 --- /dev/null +++ b/src/PixiEditor.Extensions.Sdk/Api/Documents/Document.cs @@ -0,0 +1,21 @@ +using PixiEditor.Extensions.CommonApi.Documents; +using PixiEditor.Extensions.Sdk.Bridge; + +namespace PixiEditor.Extensions.Sdk.Api.Documents; + +public class Document : IDocument +{ + public Guid Id => documentId; + private Guid documentId; + + internal Document(Guid documentId) + { + this.documentId = documentId; + } + + + public void Resize(int width, int height) + { + Native.resize_document(documentId.ToString(), width, height); + } +} diff --git a/src/PixiEditor.Extensions.Sdk/Api/FlyUI/LayoutElement.cs b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/LayoutElement.cs index 060fd98a8..9a4200db5 100644 --- a/src/PixiEditor.Extensions.Sdk/Api/FlyUI/LayoutElement.cs +++ b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/LayoutElement.cs @@ -6,6 +6,8 @@ namespace PixiEditor.Extensions.Sdk.Api.FlyUI; public abstract class LayoutElement : ILayoutElement { private Dictionary> _events; + private Dictionary<(string, Delegate), ElementEventHandler> _wrappedHandlers = new(); + public List BuildQueuedEvents = new List(); public int UniqueId { get; set; } @@ -74,7 +76,7 @@ public abstract class LayoutElement : ILayoutElement BuildQueuedEvents.Add(eventName); } - /*public void AddEvent(string eventName, ElementEventHandler eventHandler) where TEventArgs : ElementEventArgs + public void AddEvent(string eventName, ElementEventHandler eventHandler) where T : ElementEventArgs { if (_events == null) { @@ -86,9 +88,12 @@ public abstract class LayoutElement : ILayoutElement _events.Add(eventName, new List()); } - _events[eventName].Add((args => eventHandler((TEventArgs)args))); + ElementEventHandler wrapped = x => eventHandler(x as T); + + _wrappedHandlers.Add((eventName, eventHandler), wrapped); + _events[eventName].Add(wrapped); BuildQueuedEvents.Add(eventName); - }*/ + } public void RemoveEvent(string eventName, ElementEventHandler eventHandler) { @@ -105,7 +110,7 @@ public abstract class LayoutElement : ILayoutElement _events[eventName].Remove(eventHandler); } - /*public void RemoveEvent(string eventName, ElementEventHandler eventHandler) where TEventArgs : ElementEventArgs + public void RemoveEvent(string eventName, ElementEventHandler eventHandler) where T : ElementEventArgs { if (_events == null) { @@ -117,8 +122,12 @@ public abstract class LayoutElement : ILayoutElement return; } - _events[eventName].Remove((args => eventHandler((TEventArgs)args))); - }*/ + if (_wrappedHandlers.TryGetValue((eventName, eventHandler), out ElementEventHandler wrapped)) + { + _wrappedHandlers.Remove((eventName, eventHandler)); + _events[eventName].Remove(wrapped); + } + } public void RaiseEvent(string eventName, ElementEventArgs args) { diff --git a/src/PixiEditor.Extensions.Sdk/Api/FlyUI/SizeInputField.cs b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/SizeInputField.cs new file mode 100644 index 000000000..437f90628 --- /dev/null +++ b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/SizeInputField.cs @@ -0,0 +1,39 @@ +using PixiEditor.Extensions.CommonApi.FlyUI; +using PixiEditor.Extensions.CommonApi.FlyUI.Events; + +namespace PixiEditor.Extensions.Sdk.Api.FlyUI; + +public class SizeInputField : LayoutElement +{ + public event ElementEventHandler SizeChanged + { + add => AddEvent(nameof(SizeChanged), value); + remove => RemoveEvent(nameof(SizeChanged), value); + } + public double Value { get; set; } + public double Min { get; set; } + public double Max { get; set; } + public int Decimals { get; set; } + public string Unit { get; set; } + + public SizeInputField(double value = 0, double min = 1, double max = double.MaxValue, int decimals = 0, string unit = "px", Cursor? cursor = null) : base(cursor) + { + Value = value; + Min = min; + Max = max; + Decimals = decimals; + Unit = unit; + SizeChanged += e => Value = e.Value; + } + + protected override ControlDefinition CreateControl() + { + ControlDefinition field = new ControlDefinition(UniqueId, "SizeInputField"); + field.AddProperty(Value); + field.AddProperty(Min); + field.AddProperty(Max); + field.AddProperty(Decimals); + field.AddProperty(Unit); + return field; + } +} diff --git a/src/PixiEditor.Extensions.Sdk/Api/FlyUI/StatelessElement.cs b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/StatelessElement.cs index 576a2a71d..8ad0b3a2c 100644 --- a/src/PixiEditor.Extensions.Sdk/Api/FlyUI/StatelessElement.cs +++ b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/StatelessElement.cs @@ -9,6 +9,10 @@ public abstract class StatelessElement : LayoutElement, IStatelessElement Build() { return this; diff --git a/src/PixiEditor.Extensions.Sdk/Api/FlyUI/TextField.cs b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/TextField.cs new file mode 100644 index 000000000..f5105dc4f --- /dev/null +++ b/src/PixiEditor.Extensions.Sdk/Api/FlyUI/TextField.cs @@ -0,0 +1,27 @@ +using PixiEditor.Extensions.CommonApi.FlyUI; +using PixiEditor.Extensions.CommonApi.FlyUI.Events; + +namespace PixiEditor.Extensions.Sdk.Api.FlyUI; + +public class TextField : LayoutElement +{ + public event ElementEventHandler TextChanged + { + add => AddEvent(nameof(TextChanged), value); + remove => RemoveEvent(nameof(TextChanged), value); + } + public string Text { get; set; } + + public TextField(string? text = null, Cursor? cursor = null) : base(cursor) + { + Text = text ?? string.Empty; + TextChanged += e => Text = e.Text; + } + + protected override ControlDefinition CreateControl() + { + ControlDefinition textField = new ControlDefinition(UniqueId, "TextField"); + textField.AddProperty(Text); + return textField; + } +} diff --git a/src/PixiEditor.Extensions.Sdk/Api/IO/DocumentProvider.cs b/src/PixiEditor.Extensions.Sdk/Api/IO/DocumentProvider.cs index 7c39070e3..fb8c658bd 100644 --- a/src/PixiEditor.Extensions.Sdk/Api/IO/DocumentProvider.cs +++ b/src/PixiEditor.Extensions.Sdk/Api/IO/DocumentProvider.cs @@ -1,12 +1,24 @@ +using PixiEditor.Extensions.CommonApi.Documents; using PixiEditor.Extensions.CommonApi.IO; +using PixiEditor.Extensions.Sdk.Api.Documents; using PixiEditor.Extensions.Sdk.Bridge; namespace PixiEditor.Extensions.Sdk.Api.IO; public class DocumentProvider : IDocumentProvider { - public void ImportFile(string path, bool associatePath = true) + public IDocument ActiveDocument => Interop.GetActiveDocument(); + + public IDocument? ImportFile(string path, bool associatePath = true) { - Native.import_file(path, associatePath); + return Interop.ImportFile(path, associatePath); + } + + public IDocument? GetDocument(Guid id) + { + if (id == Guid.Empty) + throw new ArgumentException("Invalid document ID"); + + return new Document(id); } } diff --git a/src/PixiEditor.Extensions.Sdk/Bridge/Interop.Document.cs b/src/PixiEditor.Extensions.Sdk/Bridge/Interop.Document.cs new file mode 100644 index 000000000..2daa31adc --- /dev/null +++ b/src/PixiEditor.Extensions.Sdk/Bridge/Interop.Document.cs @@ -0,0 +1,25 @@ +using PixiEditor.Extensions.CommonApi.Documents; +using PixiEditor.Extensions.Sdk.Api.Documents; + +namespace PixiEditor.Extensions.Sdk.Bridge; + +internal static partial class Interop +{ + public static IDocument GetActiveDocument() + { + string document = Native.get_active_document(); + if (document == null || !Guid.TryParse(document, out Guid id)) + return null; + + return new Document(id); + } + + public static IDocument? ImportFile(string path, bool associatePath) + { + string document = Native.import_file(path, associatePath); + if (document == null || !Guid.TryParse(document, out Guid id)) + return null; + + return new Document(id); + } +} diff --git a/src/PixiEditor.Extensions.Sdk/Bridge/Native.Document.cs b/src/PixiEditor.Extensions.Sdk/Bridge/Native.Document.cs index 6c1bedaa1..48baa3ed7 100644 --- a/src/PixiEditor.Extensions.Sdk/Bridge/Native.Document.cs +++ b/src/PixiEditor.Extensions.Sdk/Bridge/Native.Document.cs @@ -5,5 +5,11 @@ namespace PixiEditor.Extensions.Sdk.Bridge; internal partial class Native { [MethodImpl(MethodImplOptions.InternalCall)] - internal static extern void import_file(string path, bool associatePath); + internal static extern string import_file(string path, bool associatePath); + + [MethodImpl(MethodImplOptions.InternalCall)] + internal static extern string get_active_document(); + + [MethodImpl(MethodImplOptions.InternalCall)] + internal static extern void resize_document(string documentId, int width, int height); } diff --git a/src/PixiEditor.Extensions.Sdk/Bridge/Native.cs b/src/PixiEditor.Extensions.Sdk/Bridge/Native.cs index 3df16649c..8893d1b99 100644 --- a/src/PixiEditor.Extensions.Sdk/Bridge/Native.cs +++ b/src/PixiEditor.Extensions.Sdk/Bridge/Native.cs @@ -5,6 +5,8 @@ using System.Runtime.CompilerServices; using PixiEditor.Extensions.CommonApi.FlyUI; using PixiEditor.Extensions.CommonApi.FlyUI.Events; using PixiEditor.Extensions.Sdk.Api.FlyUI; +using PixiEditor.Extensions.Sdk.Utilities; +using ProtoBuf; namespace PixiEditor.Extensions.Sdk.Bridge; @@ -50,11 +52,23 @@ internal static partial class Native } [ApiExport("raise_element_event")] - internal static void EventRaised(int internalControlId, string eventName) //TOOD: Args + internal static void EventRaised(int internalControlId, string eventName, IntPtr eventData, int dataLength) { if (LayoutElementsStore.LayoutElements.TryGetValue((int)internalControlId, out ILayoutElement element)) { - element.RaiseEvent(eventName ?? "", new ElementEventArgs { Sender = element }); + byte[] data = InteropUtility.IntPtrToByteArray(eventData, dataLength); + ElementEventArgs args = ElementEventArgs.Deserialize(data); + args.Sender = element; + element.RaiseEvent(eventName ?? "", args); + } + } + + [ApiExport("raise_element_text_event")] + internal static void TextEventRaised(int internalControlId, string eventName, string text) + { + if (LayoutElementsStore.LayoutElements.TryGetValue((int)internalControlId, out ILayoutElement element)) + { + element.RaiseEvent(eventName ?? "", new TextEventArgs(text) { Sender = element }); } } diff --git a/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Api.CGlueMSBuild.dll b/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Api.CGlueMSBuild.dll index 23e67fcdc..866c5311f 100644 Binary files a/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Api.CGlueMSBuild.dll and b/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Api.CGlueMSBuild.dll differ diff --git a/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Extensions.MSPackageBuilder.dll b/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Extensions.MSPackageBuilder.dll index 3232fb255..63aafd6b7 100644 Binary files a/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Extensions.MSPackageBuilder.dll and b/src/PixiEditor.Extensions.Sdk/build/PixiEditor.Extensions.MSPackageBuilder.dll differ diff --git a/src/PixiEditor.Extensions.WasmRuntime/Api/DocumentsApi.cs b/src/PixiEditor.Extensions.WasmRuntime/Api/DocumentsApi.cs index 0efcad8e8..8d5cb5d48 100644 --- a/src/PixiEditor.Extensions.WasmRuntime/Api/DocumentsApi.cs +++ b/src/PixiEditor.Extensions.WasmRuntime/Api/DocumentsApi.cs @@ -6,17 +6,43 @@ namespace PixiEditor.Extensions.WasmRuntime.Api; internal class DocumentsApi : ApiGroupHandler { [ApiFunction("import_file")] - public void ImportFile(string path, bool associatePath = false) + public string ImportFile(string path, bool associatePath = false) { PermissionUtility.ThrowIfLacksPermissions(Extension.Metadata, ExtensionPermissions.OpenDocuments, "ImportFile"); string fullPath = ResourcesUtility.ToResourcesFullPath(Extension, path); - if (!File.Exists(fullPath)) + string id = string.Empty; + if (File.Exists(fullPath)) { - return; + id = Api.Documents.ImportFile(fullPath, associatePath)?.Id.ToString() ?? string.Empty; } - Api.Documents.ImportFile(fullPath, associatePath); + return id; + } + + [ApiFunction("get_active_document")] + public string GetActiveDocument() + { + var activeDocument = Api.Documents.ActiveDocument; + string id = activeDocument?.Id.ToString() ?? string.Empty; + return id; + } + + [ApiFunction("resize_document")] + public void ResizeDocument(string documentId, int width, int height) + { + if (!Guid.TryParse(documentId, out Guid id)) + { + throw new ArgumentException("Invalid document ID"); + } + + var document = Api.Documents.GetDocument(id); + if (document == null) + { + throw new ArgumentException("Document not found"); + } + + document.Resize(width, height); } } diff --git a/src/PixiEditor.Extensions.WasmRuntime/Api/FlyUiApi.cs b/src/PixiEditor.Extensions.WasmRuntime/Api/FlyUiApi.cs index 09fbc2909..97f7fa11f 100644 --- a/src/PixiEditor.Extensions.WasmRuntime/Api/FlyUiApi.cs +++ b/src/PixiEditor.Extensions.WasmRuntime/Api/FlyUiApi.cs @@ -13,11 +13,16 @@ internal class FlyUIApi : ApiGroupHandler LayoutBuilder.ManagedElements[controlId].AddEvent(eventName, (args) => { - var action = Instance.GetAction("raise_element_event"); + var action = Instance.GetAction("raise_element_event"); var ptr = WasmMemoryUtility.WriteString(eventName); - action.Invoke(controlId, ptr); + var data = args.Serialize(); + var dataPtr = WasmMemoryUtility.WriteBytes(data); + int dataSize = data.Length; + + action.Invoke(controlId, ptr, dataPtr, dataSize); WasmMemoryUtility.Free(ptr); + WasmMemoryUtility.Free(dataPtr); }); } diff --git a/src/PixiEditor.Extensions.WasmRuntime/Api/LocalizationApi.cs b/src/PixiEditor.Extensions.WasmRuntime/Api/LocalizationApi.cs index ee556bfe2..4f0e0cc66 100644 --- a/src/PixiEditor.Extensions.WasmRuntime/Api/LocalizationApi.cs +++ b/src/PixiEditor.Extensions.WasmRuntime/Api/LocalizationApi.cs @@ -1,4 +1,4 @@ -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Extensions.WasmRuntime.Api; diff --git a/src/PixiEditor.Extensions.WasmRuntime/Api/Palettes/PalettesApi.cs b/src/PixiEditor.Extensions.WasmRuntime/Api/Palettes/PalettesApi.cs index f83334000..8446d7ec2 100644 --- a/src/PixiEditor.Extensions.WasmRuntime/Api/Palettes/PalettesApi.cs +++ b/src/PixiEditor.Extensions.WasmRuntime/Api/Palettes/PalettesApi.cs @@ -1,9 +1,7 @@ -using CommunityToolkit.HighPerformance; -using PixiEditor.Extensions.CommonApi.Palettes; -using PixiEditor.Extensions.WasmRuntime.Api.Palettes; +using PixiEditor.Extensions.CommonApi.Palettes; using ProtoBuf; -namespace PixiEditor.Extensions.WasmRuntime.Api; +namespace PixiEditor.Extensions.WasmRuntime.Api.Palettes; internal class PalettesApi : ApiGroupHandler { diff --git a/src/PixiEditor.Extensions.WasmRuntime/Api/WindowingApi.cs b/src/PixiEditor.Extensions.WasmRuntime/Api/WindowingApi.cs index ab7de6f6c..1614ef47d 100644 --- a/src/PixiEditor.Extensions.WasmRuntime/Api/WindowingApi.cs +++ b/src/PixiEditor.Extensions.WasmRuntime/Api/WindowingApi.cs @@ -1,10 +1,8 @@ -using PixiEditor.Extensions.Common.Localization; -using PixiEditor.Extensions.CommonApi.Async; -using PixiEditor.Extensions.CommonApi.Utilities; -using PixiEditor.Extensions.CommonApi.Windowing; +using PixiEditor.Extensions.CommonApi.Windowing; using PixiEditor.Extensions.FlyUI.Elements; using PixiEditor.Extensions.WasmRuntime.Utilities; using PixiEditor.Extensions.Windowing; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Extensions.WasmRuntime.Api; diff --git a/src/PixiEditor.Extensions.WasmRuntime/WasmExtensionInstance.cs b/src/PixiEditor.Extensions.WasmRuntime/WasmExtensionInstance.cs index 4c47f9997..a8ad89a11 100644 --- a/src/PixiEditor.Extensions.WasmRuntime/WasmExtensionInstance.cs +++ b/src/PixiEditor.Extensions.WasmRuntime/WasmExtensionInstance.cs @@ -21,7 +21,7 @@ public partial class WasmExtensionInstance : Extension private Linker Linker { get; } private Store Store { get; } private Module Module { get; } - + private LayoutBuilder LayoutBuilder { get; set; } internal ObjectManager NativeObjectManager { get; set; } internal AsyncCallsManager AsyncHandleManager { get; set; } @@ -30,7 +30,7 @@ public partial class WasmExtensionInstance : Extension private string modulePath; private List modules = new(); - + public override string Location => modulePath; partial void LinkApiFunctions(); @@ -49,7 +49,7 @@ public partial class WasmExtensionInstance : Extension AsyncHandleManager = new AsyncCallsManager(); AsyncHandleManager.OnAsyncCallCompleted += OnAsyncCallCompleted; AsyncHandleManager.OnAsyncCallFaulted += OnAsyncCallFaulted; - + LinkApiFunctions(); Linker.DefineModule(Store, Module); @@ -66,19 +66,20 @@ public partial class WasmExtensionInstance : Extension protected override void OnInitialized() { modules.Add(new PreferencesModule(this, Api.Preferences)); - modules.Add(new CommandModule(this, Api.Commands, (ICommandSupervisor)Api.Services.GetService(typeof(ICommandSupervisor)))); + modules.Add(new CommandModule(this, Api.Commands, + (ICommandSupervisor)Api.Services.GetService(typeof(ICommandSupervisor)))); LayoutBuilder = new LayoutBuilder((ElementMap)Api.Services.GetService(typeof(ElementMap))); //SetElementMap(); Instance.GetAction("initialize").Invoke(); base.OnInitialized(); } - + private void OnAsyncCallCompleted(int handle, int result) { Instance.GetAction("async_call_completed").Invoke(handle, result); } - + private void OnAsyncCallFaulted(int handle, string exceptionMessage) { Instance.GetAction("async_call_faulted").Invoke(handle, exceptionMessage); diff --git a/src/PixiEditor.Extensions/Exceptions/RecoverableException.cs b/src/PixiEditor.Extensions/Exceptions/RecoverableException.cs index 103080899..4521dc03a 100644 --- a/src/PixiEditor.Extensions/Exceptions/RecoverableException.cs +++ b/src/PixiEditor.Extensions/Exceptions/RecoverableException.cs @@ -1,5 +1,5 @@ using System.Runtime.Serialization; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Extensions.Exceptions; diff --git a/src/PixiEditor.Extensions/FlyUI/Elements/SizeInputField.cs b/src/PixiEditor.Extensions/FlyUI/Elements/SizeInputField.cs new file mode 100644 index 000000000..8db29401e --- /dev/null +++ b/src/PixiEditor.Extensions/FlyUI/Elements/SizeInputField.cs @@ -0,0 +1,49 @@ +using Avalonia.Controls; +using Avalonia.Data; +using PixiEditor.Extensions.CommonApi.FlyUI.Events; +using PixiEditor.UI.Common.Controls; + +namespace PixiEditor.Extensions.FlyUI.Elements; + +public class SizeInputField : LayoutElement +{ + public event ElementEventHandler SizeChanged + { + add => AddEvent(nameof(SizeChanged), value); + remove => RemoveEvent(nameof(SizeChanged), value); + } + + public double Value { get; set; } + public double Min { get; set; } = 1; + public double Max { get; set; } + public int Decimals { get; set; } + public string Unit { get; set; } + + protected override Control CreateNativeControl() + { + SizeInput sizeInput = new SizeInput { MinSize = Min, MaxSize = Max, Decimals = Decimals, Unit = Unit }; + + Binding binding = new Binding { Source = this, Path = nameof(Value), Mode = BindingMode.TwoWay, }; + + sizeInput.Bind(SizeInput.SizeProperty, binding); + + sizeInput.PropertyChanged += (sender, args) => + { + if (args.Property != SizeInput.SizeProperty) return; + + Value = sizeInput.Size; + RaiseEvent(nameof(SizeChanged), new NumberEventArgs(Value)); + }; + + return sizeInput; + } + + protected override void DeserializeControlProperties(List values) + { + Value = (double)values[0]; + Min = (double)values[1]; + Max = (double)values[2]; + Decimals = (int)values[3]; + Unit = (string)values[4]; + } +} diff --git a/src/PixiEditor.Extensions/FlyUI/Elements/TextField.cs b/src/PixiEditor.Extensions/FlyUI/Elements/TextField.cs new file mode 100644 index 000000000..50c2917f4 --- /dev/null +++ b/src/PixiEditor.Extensions/FlyUI/Elements/TextField.cs @@ -0,0 +1,42 @@ +using Avalonia.Controls; +using Avalonia.Data; +using PixiEditor.Extensions.CommonApi.FlyUI.Events; + +namespace PixiEditor.Extensions.FlyUI.Elements; + +internal class TextField : LayoutElement +{ + public event ElementEventHandler TextChanged + { + add => AddEvent(nameof(TextChanged), value); + remove => RemoveEvent(nameof(TextChanged), value); + } + + public string Text { get; set; } + + public TextField(string text) + { + Text = text; + } + + protected override Control CreateNativeControl() + { + TextBox textBox = new TextBox(); + + Binding binding = + new Binding(nameof(Text)) { Source = this, Mode = BindingMode.TwoWay }; + textBox.Bind(TextBox.TextProperty, binding); + + textBox.TextChanged += (s, e) => + { + RaiseEvent(nameof(TextChanged), new TextEventArgs(textBox.Text)); + }; + + return textBox; + } + + protected override void DeserializeControlProperties(List values) + { + Text = (string)values[0]; + } +} diff --git a/src/PixiEditor.Extensions/Metadata/ExtensionMetadata.cs b/src/PixiEditor.Extensions/Metadata/ExtensionMetadata.cs index d4e15a56a..b8661c131 100644 --- a/src/PixiEditor.Extensions/Metadata/ExtensionMetadata.cs +++ b/src/PixiEditor.Extensions/Metadata/ExtensionMetadata.cs @@ -1,4 +1,4 @@ -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Extensions.Metadata; diff --git a/src/PixiEditor.Extensions/PixiEditor.Extensions.csproj b/src/PixiEditor.Extensions/PixiEditor.Extensions.csproj index 44c1a4777..4b35709c5 100644 --- a/src/PixiEditor.Extensions/PixiEditor.Extensions.csproj +++ b/src/PixiEditor.Extensions/PixiEditor.Extensions.csproj @@ -9,7 +9,7 @@ PixiEditor Extensions PixiEditor Organization PixiEditor Organization - Package for creating custom extensions for pixel art editor PixiEditor + Package for creating custom extensions for univrsal 2D editor PixiEditor @@ -25,5 +25,11 @@ + + + + + + diff --git a/src/PixiEditor/Helpers/Behaviours/TextBoxFocusBehavior.cs b/src/PixiEditor.UI.Common/Behaviors/TextBoxFocusBehavior.cs similarity index 97% rename from src/PixiEditor/Helpers/Behaviours/TextBoxFocusBehavior.cs rename to src/PixiEditor.UI.Common/Behaviors/TextBoxFocusBehavior.cs index 55d5cc195..5fc17003d 100644 --- a/src/PixiEditor/Helpers/Behaviours/TextBoxFocusBehavior.cs +++ b/src/PixiEditor.UI.Common/Behaviors/TextBoxFocusBehavior.cs @@ -5,9 +5,9 @@ using Avalonia.Interactivity; using Avalonia.Threading; using Avalonia.Xaml.Interactivity; -namespace PixiEditor.Helpers.Behaviours; +namespace PixiEditor.UI.Common.Behaviors; -internal class TextBoxFocusBehavior : Behavior +public class TextBoxFocusBehavior : Behavior { public static readonly StyledProperty SelectOnMouseClickProperty = AvaloniaProperty.Register( diff --git a/src/PixiEditor/Views/Input/NumberInput.cs b/src/PixiEditor.UI.Common/Controls/NumberInput.cs similarity index 98% rename from src/PixiEditor/Views/Input/NumberInput.cs rename to src/PixiEditor.UI.Common/Controls/NumberInput.cs index 439c108f0..29971ea75 100644 --- a/src/PixiEditor/Views/Input/NumberInput.cs +++ b/src/PixiEditor.UI.Common/Controls/NumberInput.cs @@ -1,6 +1,5 @@ using System.Data; using System.Globalization; -using System.Linq; using System.Text.RegularExpressions; using Avalonia; using Avalonia.Controls; @@ -11,13 +10,15 @@ using Avalonia.Interactivity; using Avalonia.Layout; using Avalonia.Media; using Avalonia.Xaml.Interactivity; -using PixiEditor.Helpers.Behaviours; +using PixiEditor.UI.Common.Behaviors; using Action = System.Action; -namespace PixiEditor.Views.Input; +namespace PixiEditor.UI.Common.Controls; -internal partial class NumberInput : TextBox +public partial class NumberInput : TextBox { + public static event Action AttachGlobalBehaviors; + public static readonly StyledProperty ValueProperty = AvaloniaProperty.Register( nameof(Value), 0, coerce: CoerceValue); @@ -154,7 +155,7 @@ internal partial class NumberInput : TextBox public NumberInput() { BehaviorCollection behaviors = Interaction.GetBehaviors(this); - behaviors.Add(new GlobalShortcutFocusBehavior()); + AttachGlobalBehaviors?.Invoke(behaviors); TextBoxFocusBehavior behavior = new() { DeselectOnFocusLoss = true, SelectOnMouseClick = true }; BindTextBoxBehavior(behavior); behaviors.Add(behavior); diff --git a/src/PixiEditor/Views/Input/SizeInput.axaml b/src/PixiEditor.UI.Common/Controls/SizeInput.axaml similarity index 76% rename from src/PixiEditor/Views/Input/SizeInput.axaml rename to src/PixiEditor.UI.Common/Controls/SizeInput.axaml index 7a973d1d4..2948c96e3 100644 --- a/src/PixiEditor/Views/Input/SizeInput.axaml +++ b/src/PixiEditor.UI.Common/Controls/SizeInput.axaml @@ -1,11 +1,10 @@ - @@ -28,23 +27,23 @@ - + Width="53"/> - diff --git a/src/PixiEditor/Views/Input/SizeInput.axaml.cs b/src/PixiEditor.UI.Common/Controls/SizeInput.axaml.cs similarity index 97% rename from src/PixiEditor/Views/Input/SizeInput.axaml.cs rename to src/PixiEditor.UI.Common/Controls/SizeInput.axaml.cs index 4594bd7d6..fcc47fc78 100644 --- a/src/PixiEditor/Views/Input/SizeInput.axaml.cs +++ b/src/PixiEditor.UI.Common/Controls/SizeInput.axaml.cs @@ -1,14 +1,13 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Input; -using PixiEditor.Models.Dialogs; -namespace PixiEditor.Views.Input; +namespace PixiEditor.UI.Common.Controls; /// /// Interaction logic for SizeInput.xaml. /// -internal partial class SizeInput : UserControl +public partial class SizeInput : UserControl { public static readonly StyledProperty SizeProperty = AvaloniaProperty.Register(nameof(Size), defaultValue: 1); diff --git a/src/PixiEditor.Extensions/Helpers/EnumHelpers.cs b/src/PixiEditor.UI.Common/Localization/EnumHelpers.cs similarity index 97% rename from src/PixiEditor.Extensions/Helpers/EnumHelpers.cs rename to src/PixiEditor.UI.Common/Localization/EnumHelpers.cs index 036a50767..e9ced345f 100644 --- a/src/PixiEditor.Extensions/Helpers/EnumHelpers.cs +++ b/src/PixiEditor.UI.Common/Localization/EnumHelpers.cs @@ -1,6 +1,6 @@ using System.ComponentModel; -namespace PixiEditor.Extensions.Helpers; +namespace PixiEditor.UI.Common.Localization; public static class EnumHelpers { diff --git a/src/PixiEditor.Extensions/UI/ExternalProperty.cs b/src/PixiEditor.UI.Common/Localization/ExternalProperty.cs similarity index 92% rename from src/PixiEditor.Extensions/UI/ExternalProperty.cs rename to src/PixiEditor.UI.Common/Localization/ExternalProperty.cs index 5749b25e3..87410afba 100644 --- a/src/PixiEditor.Extensions/UI/ExternalProperty.cs +++ b/src/PixiEditor.UI.Common/Localization/ExternalProperty.cs @@ -1,7 +1,6 @@ using Avalonia; -using PixiEditor.Extensions.Common.Localization; -namespace PixiEditor.Extensions.UI; +namespace PixiEditor.UI.Common.Localization; public abstract class ExternalProperty { diff --git a/src/PixiEditor.Extensions/UI/ICustomTranslatorElement.cs b/src/PixiEditor.UI.Common/Localization/ICustomTranslatorElement.cs similarity index 83% rename from src/PixiEditor.Extensions/UI/ICustomTranslatorElement.cs rename to src/PixiEditor.UI.Common/Localization/ICustomTranslatorElement.cs index 8a281fd27..4b53a7efe 100644 --- a/src/PixiEditor.Extensions/UI/ICustomTranslatorElement.cs +++ b/src/PixiEditor.UI.Common/Localization/ICustomTranslatorElement.cs @@ -1,6 +1,6 @@ using Avalonia; -namespace PixiEditor.Extensions.UI; +namespace PixiEditor.UI.Common.Localization; public interface ICustomTranslatorElement { diff --git a/src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs b/src/PixiEditor.UI.Common/Localization/ILocalizationProvider.cs similarity index 94% rename from src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs rename to src/PixiEditor.UI.Common/Localization/ILocalizationProvider.cs index 694b9ff20..e1c90627c 100644 --- a/src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs +++ b/src/PixiEditor.UI.Common/Localization/ILocalizationProvider.cs @@ -1,4 +1,4 @@ -namespace PixiEditor.Extensions.Common.Localization; +namespace PixiEditor.UI.Common.Localization; public interface ILocalizationProvider { diff --git a/src/PixiEditor.Extensions/Common/Localization/Language.cs b/src/PixiEditor.UI.Common/Localization/Language.cs similarity index 93% rename from src/PixiEditor.Extensions/Common/Localization/Language.cs rename to src/PixiEditor.UI.Common/Localization/Language.cs index 2333418fb..aaf5d2e5d 100644 --- a/src/PixiEditor.Extensions/Common/Localization/Language.cs +++ b/src/PixiEditor.UI.Common/Localization/Language.cs @@ -1,8 +1,7 @@ using System.Diagnostics; -using System.Windows; using Avalonia.Media; -namespace PixiEditor.Extensions.Common.Localization; +namespace PixiEditor.UI.Common.Localization; [DebuggerDisplay("{LanguageData.Name}, strings: {Locale.Count}")] public class Language diff --git a/src/PixiEditor.Extensions/Common/Localization/LanguageData.cs b/src/PixiEditor.UI.Common/Localization/LanguageData.cs similarity index 95% rename from src/PixiEditor.Extensions/Common/Localization/LanguageData.cs rename to src/PixiEditor.UI.Common/Localization/LanguageData.cs index af8e5d9e0..5b5d50424 100644 --- a/src/PixiEditor.Extensions/Common/Localization/LanguageData.cs +++ b/src/PixiEditor.UI.Common/Localization/LanguageData.cs @@ -1,7 +1,7 @@ using System.Globalization; using Newtonsoft.Json; -namespace PixiEditor.Extensions.Common.Localization; +namespace PixiEditor.UI.Common.Localization; public class LanguageData { diff --git a/src/PixiEditor.Extensions/Common/Localization/LocalizationData.cs b/src/PixiEditor.UI.Common/Localization/LocalizationData.cs similarity index 92% rename from src/PixiEditor.Extensions/Common/Localization/LocalizationData.cs rename to src/PixiEditor.UI.Common/Localization/LocalizationData.cs index 33778508b..96a8e980a 100644 --- a/src/PixiEditor.Extensions/Common/Localization/LocalizationData.cs +++ b/src/PixiEditor.UI.Common/Localization/LocalizationData.cs @@ -1,7 +1,6 @@ using System.Diagnostics; -using System.IO; -namespace PixiEditor.Extensions.Common.Localization; +namespace PixiEditor.UI.Common.Localization; [DebuggerDisplay("{Languages.Count} Language(s)")] public class LocalizationData diff --git a/src/PixiEditor.Extensions/Common/Localization/LocalizationKeyShowMode.cs b/src/PixiEditor.UI.Common/Localization/LocalizationKeyShowMode.cs similarity index 88% rename from src/PixiEditor.Extensions/Common/Localization/LocalizationKeyShowMode.cs rename to src/PixiEditor.UI.Common/Localization/LocalizationKeyShowMode.cs index b2a26660d..3aa866c16 100644 --- a/src/PixiEditor.Extensions/Common/Localization/LocalizationKeyShowMode.cs +++ b/src/PixiEditor.UI.Common/Localization/LocalizationKeyShowMode.cs @@ -1,4 +1,4 @@ -namespace PixiEditor.Extensions.Common.Localization; +namespace PixiEditor.UI.Common.Localization; public enum LocalizationKeyShowMode { diff --git a/src/PixiEditor.Extensions/Common/Localization/LocalizedString.cs b/src/PixiEditor.UI.Common/Localization/LocalizedString.cs similarity index 98% rename from src/PixiEditor.Extensions/Common/Localization/LocalizedString.cs rename to src/PixiEditor.UI.Common/Localization/LocalizedString.cs index 26573e22f..a27ed5a62 100644 --- a/src/PixiEditor.Extensions/Common/Localization/LocalizedString.cs +++ b/src/PixiEditor.UI.Common/Localization/LocalizedString.cs @@ -1,4 +1,4 @@ -namespace PixiEditor.Extensions.Common.Localization; +namespace PixiEditor.UI.Common.Localization; public struct LocalizedString { diff --git a/src/PixiEditor.Extensions/UI/Translator.cs b/src/PixiEditor.UI.Common/Localization/Translator.cs similarity index 98% rename from src/PixiEditor.Extensions/UI/Translator.cs rename to src/PixiEditor.UI.Common/Localization/Translator.cs index bb6436ec3..05e7815d0 100644 --- a/src/PixiEditor.Extensions/UI/Translator.cs +++ b/src/PixiEditor.UI.Common/Localization/Translator.cs @@ -2,14 +2,10 @@ using Avalonia.Controls; using Avalonia.Controls.Documents; using Avalonia.Controls.Primitives; -using Avalonia.Data; -using Avalonia.Data.Core; using Avalonia.Media; using Avalonia.Reactive; -using PixiEditor.Extensions.Common.Localization; -using PixiEditor.Extensions.Helpers; -namespace PixiEditor.Extensions.UI; +namespace PixiEditor.UI.Common.Localization; public class Translator : Control { diff --git a/src/PixiEditor.UI.Common/PixiEditor.UI.Common.csproj b/src/PixiEditor.UI.Common/PixiEditor.UI.Common.csproj index 13694ccfe..3a4007856 100644 --- a/src/PixiEditor.UI.Common/PixiEditor.UI.Common.csproj +++ b/src/PixiEditor.UI.Common/PixiEditor.UI.Common.csproj @@ -17,5 +17,13 @@ + + + + + + SizeInput.axaml + Code + diff --git a/src/PixiEditor.Windows/Win32.cs b/src/PixiEditor.Windows/Win32.cs index 051c8d031..996fa1b0b 100644 --- a/src/PixiEditor.Windows/Win32.cs +++ b/src/PixiEditor.Windows/Win32.cs @@ -1,7 +1,7 @@ using System.Runtime.InteropServices; using System.Text; -namespace PixiEditor.Helpers; +namespace PixiEditor.Windows; internal class Win32 { public const uint MONITOR_DEFAULTTONEAREST = 0x00000002; diff --git a/src/PixiEditor.Windows/WindowsInputKeys.cs b/src/PixiEditor.Windows/WindowsInputKeys.cs index 452072ecb..3690ce8e1 100644 --- a/src/PixiEditor.Windows/WindowsInputKeys.cs +++ b/src/PixiEditor.Windows/WindowsInputKeys.cs @@ -1,7 +1,6 @@ using System.Text; using Avalonia.Input; using Avalonia.Win32.Input; -using PixiEditor.Helpers; using PixiEditor.OperatingSystem; namespace PixiEditor.Windows; diff --git a/src/PixiEditor.Windows/WindowsOperatingSystem.cs b/src/PixiEditor.Windows/WindowsOperatingSystem.cs index 735dd4b9e..c17a58a61 100644 --- a/src/PixiEditor.Windows/WindowsOperatingSystem.cs +++ b/src/PixiEditor.Windows/WindowsOperatingSystem.cs @@ -1,7 +1,6 @@ using System.Runtime.InteropServices; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Threading; -using PixiEditor.Helpers; using PixiEditor.OperatingSystem; namespace PixiEditor.Windows; diff --git a/src/PixiEditor/App.axaml b/src/PixiEditor/App.axaml index ae0db1f25..537a6bf11 100644 --- a/src/PixiEditor/App.axaml +++ b/src/PixiEditor/App.axaml @@ -2,8 +2,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:themes="clr-namespace:PixiEditor.UI.Common.Themes;assembly=PixiEditor.UI.Common" xmlns:avaloniaUi="clr-namespace:PixiEditor" - xmlns:templates="clr-namespace:ColorPicker.AvaloniaUI.Templates;assembly=ColorPicker.AvaloniaUI" xmlns:avalonia="clr-namespace:PixiDocks.Avalonia;assembly=PixiDocks.Avalonia" + xmlns:templates="clr-namespace:ColorPicker.Templates;assembly=ColorPicker.AvaloniaUI" x:Class="PixiEditor.App" Name="PixiEditor" RequestedThemeVariant="Dark"> diff --git a/src/PixiEditor/Exceptions/CorruptedFileException.cs b/src/PixiEditor/Exceptions/CorruptedFileException.cs index 8d21aad8b..477c318c6 100644 --- a/src/PixiEditor/Exceptions/CorruptedFileException.cs +++ b/src/PixiEditor/Exceptions/CorruptedFileException.cs @@ -1,6 +1,6 @@ using System.Runtime.Serialization; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Exceptions; diff --git a/src/PixiEditor/Exceptions/InvalidFileTypeException.cs b/src/PixiEditor/Exceptions/InvalidFileTypeException.cs index 48a4ffe2b..4bd5ae0ba 100644 --- a/src/PixiEditor/Exceptions/InvalidFileTypeException.cs +++ b/src/PixiEditor/Exceptions/InvalidFileTypeException.cs @@ -1,6 +1,6 @@ using System.Runtime.Serialization; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Exceptions; diff --git a/src/PixiEditor/Exceptions/MissingFileException.cs b/src/PixiEditor/Exceptions/MissingFileException.cs index a64f518dc..dcd6a92b5 100644 --- a/src/PixiEditor/Exceptions/MissingFileException.cs +++ b/src/PixiEditor/Exceptions/MissingFileException.cs @@ -1,6 +1,6 @@ using System.Runtime.Serialization; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Exceptions; diff --git a/src/PixiEditor/Helpers/Collections/ActionDisplayList.cs b/src/PixiEditor/Helpers/Collections/ActionDisplayList.cs index f522e14ad..05234c787 100644 --- a/src/PixiEditor/Helpers/Collections/ActionDisplayList.cs +++ b/src/PixiEditor/Helpers/Collections/ActionDisplayList.cs @@ -1,7 +1,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Helpers.Collections; diff --git a/src/PixiEditor/Helpers/Converters/BlendModeToStringConverter.cs b/src/PixiEditor/Helpers/Converters/BlendModeToStringConverter.cs index 973f44b92..2ccf18ec6 100644 --- a/src/PixiEditor/Helpers/Converters/BlendModeToStringConverter.cs +++ b/src/PixiEditor/Helpers/Converters/BlendModeToStringConverter.cs @@ -1,7 +1,7 @@ using System.Globalization; using PixiEditor.Helpers.Extensions; using PixiEditor.ChangeableDocument.Enums; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Helpers.Converters; internal class BlendModeToStringConverter : SingleInstanceConverter diff --git a/src/PixiEditor/Helpers/Converters/BoolToValueConverter.cs b/src/PixiEditor/Helpers/Converters/BoolToValueConverter.cs index 76689f6ab..81f25b6eb 100644 --- a/src/PixiEditor/Helpers/Converters/BoolToValueConverter.cs +++ b/src/PixiEditor/Helpers/Converters/BoolToValueConverter.cs @@ -1,6 +1,6 @@ using System.Globalization; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Converters; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Helpers.Converters; diff --git a/src/PixiEditor/Helpers/Converters/EnumToLocalizedStringConverter.cs b/src/PixiEditor/Helpers/Converters/EnumToLocalizedStringConverter.cs index bb296bb80..5b68e06fc 100644 --- a/src/PixiEditor/Helpers/Converters/EnumToLocalizedStringConverter.cs +++ b/src/PixiEditor/Helpers/Converters/EnumToLocalizedStringConverter.cs @@ -1,5 +1,6 @@ using System.Globalization; using PixiEditor.Extensions.Helpers; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Helpers.Converters; diff --git a/src/PixiEditor/Helpers/Converters/KeyToStringConverter.cs b/src/PixiEditor/Helpers/Converters/KeyToStringConverter.cs index 8005dfd36..87efb2b1a 100644 --- a/src/PixiEditor/Helpers/Converters/KeyToStringConverter.cs +++ b/src/PixiEditor/Helpers/Converters/KeyToStringConverter.cs @@ -1,10 +1,10 @@ using System.Globalization; using System.Text; using Avalonia.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Helpers; using PixiEditor.Models.Input; using PixiEditor.OperatingSystem; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Helpers.Converters; diff --git a/src/PixiEditor/Helpers/EnumDescriptionConverter.cs b/src/PixiEditor/Helpers/EnumDescriptionConverter.cs index 7179660f5..6c14c50be 100644 --- a/src/PixiEditor/Helpers/EnumDescriptionConverter.cs +++ b/src/PixiEditor/Helpers/EnumDescriptionConverter.cs @@ -1,6 +1,7 @@ using System.Globalization; using PixiEditor.Extensions.Helpers; using PixiEditor.Helpers.Converters; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Helpers; diff --git a/src/PixiEditor/Helpers/ServiceCollectionHelpers.cs b/src/PixiEditor/Helpers/ServiceCollectionHelpers.cs index 12f76fc64..d584c6e27 100644 --- a/src/PixiEditor/Helpers/ServiceCollectionHelpers.cs +++ b/src/PixiEditor/Helpers/ServiceCollectionHelpers.cs @@ -5,7 +5,6 @@ using Microsoft.Extensions.DependencyInjection; using PixiEditor.AnimationRenderer.Core; using PixiEditor.AnimationRenderer.FFmpeg; using PixiEditor.Extensions.Commands; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.Commands; using PixiEditor.Extensions.CommonApi.IO; using PixiEditor.Extensions.CommonApi.Logging; @@ -30,6 +29,7 @@ using PixiEditor.Models.Localization; using PixiEditor.Models.Palettes; using PixiEditor.Models.Preferences; using PixiEditor.Models.Serialization.Factories; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Dock; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.Menu; diff --git a/src/PixiEditor/Initialization/ClassicDesktopEntry.cs b/src/PixiEditor/Initialization/ClassicDesktopEntry.cs index 1b5f3a56e..eb433a374 100644 --- a/src/PixiEditor/Initialization/ClassicDesktopEntry.cs +++ b/src/PixiEditor/Initialization/ClassicDesktopEntry.cs @@ -8,17 +8,21 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Threading; -using PixiEditor.Extensions.Common.Localization; +using Avalonia.Xaml.Interactivity; using PixiEditor.Extensions.Runtime; using PixiEditor.Helpers; +using PixiEditor.Helpers.Behaviours; using PixiEditor.Models.Controllers; using PixiEditor.Models.Dialogs; using PixiEditor.Models.ExceptionHandling; using PixiEditor.Models.IO; using PixiEditor.OperatingSystem; using PixiEditor.Platform; +using PixiEditor.UI.Common.Controls; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views; using PixiEditor.Views.Dialogs; +using PixiEditor.Views.Input; using ViewModelMain = PixiEditor.ViewModels.ViewModelMain; using ViewModels_ViewModelMain = PixiEditor.ViewModels.ViewModelMain; @@ -113,6 +117,8 @@ internal class ClassicDesktopEntry InitPlatform(); + NumberInput.AttachGlobalBehaviors += AttachGlobalShortcutBehavior; + ExtensionLoader extensionLoader = new ExtensionLoader(Paths.ExtensionPackagesPath, Paths.UserExtensionsPath); //TODO: fetch from extension store extensionLoader.AddOfficialExtension("pixieditor.founderspack", @@ -224,4 +230,12 @@ internal class ClassicDesktopEntry }); } } + + private void AttachGlobalShortcutBehavior(BehaviorCollection collection) + { + if (collection is null) + return; + + collection.Add(new GlobalShortcutFocusBehavior()); + } } diff --git a/src/PixiEditor/Models/Commands/Attributes/Commands/CommandAttribute.cs b/src/PixiEditor/Models/Commands/Attributes/Commands/CommandAttribute.cs index e5c53ee7a..32d7d23e9 100644 --- a/src/PixiEditor/Models/Commands/Attributes/Commands/CommandAttribute.cs +++ b/src/PixiEditor/Models/Commands/Attributes/Commands/CommandAttribute.cs @@ -1,6 +1,6 @@ using Avalonia.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Input; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Commands.Attributes.Commands; diff --git a/src/PixiEditor/Models/Commands/Attributes/Commands/FilterAttribute.cs b/src/PixiEditor/Models/Commands/Attributes/Commands/FilterAttribute.cs index defa850a8..94362a0d5 100644 --- a/src/PixiEditor/Models/Commands/Attributes/Commands/FilterAttribute.cs +++ b/src/PixiEditor/Models/Commands/Attributes/Commands/FilterAttribute.cs @@ -1,4 +1,4 @@ -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Commands.Attributes.Commands; diff --git a/src/PixiEditor/Models/Commands/Attributes/Commands/GroupAttribute.cs b/src/PixiEditor/Models/Commands/Attributes/Commands/GroupAttribute.cs index 3a673a2db..d08091711 100644 --- a/src/PixiEditor/Models/Commands/Attributes/Commands/GroupAttribute.cs +++ b/src/PixiEditor/Models/Commands/Attributes/Commands/GroupAttribute.cs @@ -1,4 +1,4 @@ -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Commands.Attributes.Commands; diff --git a/src/PixiEditor/Models/Commands/CommandController.cs b/src/PixiEditor/Models/Commands/CommandController.cs index 53e1baf8c..217d3e17c 100644 --- a/src/PixiEditor/Models/Commands/CommandController.cs +++ b/src/PixiEditor/Models/Commands/CommandController.cs @@ -9,7 +9,6 @@ using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using PixiEditor.Exceptions; using PixiEditor.Helpers.Extensions; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.AnalyticsAPI; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Commands.Attributes.Evaluators; @@ -21,6 +20,7 @@ using PixiEditor.Models.Handlers; using PixiEditor.Models.Input; using PixiEditor.Models.Structures; using PixiEditor.OperatingSystem; +using PixiEditor.UI.Common.Localization; using Command = PixiEditor.Models.Commands.Commands.Command; using CommandAttribute = PixiEditor.Models.Commands.Attributes.Commands.Command; diff --git a/src/PixiEditor/Models/Commands/CommandGroup.cs b/src/PixiEditor/Models/Commands/CommandGroup.cs index 6c0149581..dcaf5ef05 100644 --- a/src/PixiEditor/Models/Commands/CommandGroup.cs +++ b/src/PixiEditor/Models/Commands/CommandGroup.cs @@ -3,9 +3,9 @@ using System.Linq; using Avalonia.Input; using CommunityToolkit.Mvvm.ComponentModel; using PixiEditor.Models.Commands.Evaluators; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Commands; using PixiEditor.Models.Input; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Commands; diff --git a/src/PixiEditor/Models/Commands/Commands/Command.cs b/src/PixiEditor/Models/Commands/Commands/Command.cs index ec3418b6a..1c316d1c9 100644 --- a/src/PixiEditor/Models/Commands/Commands/Command.cs +++ b/src/PixiEditor/Models/Commands/Commands/Command.cs @@ -1,9 +1,9 @@ using System.Diagnostics; using Avalonia.Media; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.CommandContext; using PixiEditor.Models.Commands.Evaluators; using PixiEditor.Models.Input; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels; namespace PixiEditor.Models.Commands.Commands; diff --git a/src/PixiEditor/Models/Commands/XAML/NativeMenu.cs b/src/PixiEditor/Models/Commands/XAML/NativeMenu.cs index dffeae328..a9b20ee1e 100644 --- a/src/PixiEditor/Models/Commands/XAML/NativeMenu.cs +++ b/src/PixiEditor/Models/Commands/XAML/NativeMenu.cs @@ -4,7 +4,6 @@ using Avalonia.Layout; using Avalonia.Media; using Avalonia.Media.Imaging; using Avalonia.Platform; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Helpers; using PixiEditor.Helpers.Extensions; using PixiEditor.Models.Commands.CommandContext; diff --git a/src/PixiEditor/Models/Constants.cs b/src/PixiEditor/Models/Constants.cs index e93b3234a..4e582b07f 100644 --- a/src/PixiEditor/Models/Constants.cs +++ b/src/PixiEditor/Models/Constants.cs @@ -6,7 +6,7 @@ internal class Constants public const int MaxPreviewWidth = 128; public const int MaxPreviewHeight = 128; - public const int MaxCanvasSize = 9999; + public const int MaxCanvasSize = 99999; public const string NativeExtensionNoDot = "pixi"; public const string NativeExtension = "." + NativeExtensionNoDot; diff --git a/src/PixiEditor/Models/Controllers/ClipboardController.cs b/src/PixiEditor/Models/Controllers/ClipboardController.cs index 0213dd45f..dd7979f02 100644 --- a/src/PixiEditor/Models/Controllers/ClipboardController.cs +++ b/src/PixiEditor/Models/Controllers/ClipboardController.cs @@ -19,7 +19,6 @@ using Drawie.Backend.Core.Numerics; using Drawie.Backend.Core.Surfaces; using Drawie.Backend.Core.Surfaces.ImageData; using Drawie.Backend.Core.Surfaces.PaintImpl; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Helpers; using PixiEditor.Helpers.Constants; using PixiEditor.Models.Clipboard; @@ -30,6 +29,7 @@ using Drawie.Numerics; using PixiEditor.ChangeableDocument.Changeables.Animations; using PixiEditor.Models.Handlers; using PixiEditor.Parser; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using Bitmap = Avalonia.Media.Imaging.Bitmap; diff --git a/src/PixiEditor/Models/Controllers/ShortcutController.cs b/src/PixiEditor/Models/Controllers/ShortcutController.cs index 4d189f999..03009304b 100644 --- a/src/PixiEditor/Models/Controllers/ShortcutController.cs +++ b/src/PixiEditor/Models/Controllers/ShortcutController.cs @@ -1,11 +1,8 @@ -using System.Collections.Generic; -using System.Linq; -using Avalonia.Input; +using Avalonia.Input; using PixiEditor.Models.Commands; using PixiEditor.Models.Commands.CommandContext; using PixiEditor.Models.Commands.Commands; using PixiEditor.Models.Input; -using PixiEditor.ViewModels.Tools; namespace PixiEditor.Models.Controllers; @@ -17,8 +14,6 @@ internal class ShortcutController public IEnumerable LastCommands { get; private set; } - public Dictionary TransientShortcuts { get; set; } = new(); - public Type? ActiveContext { get; private set; } public static void BlockShortcutExecution(string blocker) diff --git a/src/PixiEditor/Models/Dialogs/ConfirmationDialog.cs b/src/PixiEditor/Models/Dialogs/ConfirmationDialog.cs index adb4ae099..327aac206 100644 --- a/src/PixiEditor/Models/Dialogs/ConfirmationDialog.cs +++ b/src/PixiEditor/Models/Dialogs/ConfirmationDialog.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Avalonia; using Avalonia.Controls.ApplicationLifetimes; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Dialogs; namespace PixiEditor.Models.Dialogs; diff --git a/src/PixiEditor/Models/Dialogs/NoticeDialog.cs b/src/PixiEditor/Models/Dialogs/NoticeDialog.cs index f8586e439..0293b9453 100644 --- a/src/PixiEditor/Models/Dialogs/NoticeDialog.cs +++ b/src/PixiEditor/Models/Dialogs/NoticeDialog.cs @@ -1,6 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Dialogs; namespace PixiEditor.Models.Dialogs; diff --git a/src/PixiEditor/Models/Dialogs/OptionsDialog.cs b/src/PixiEditor/Models/Dialogs/OptionsDialog.cs index d27e9fddf..d235551a7 100644 --- a/src/PixiEditor/Models/Dialogs/OptionsDialog.cs +++ b/src/PixiEditor/Models/Dialogs/OptionsDialog.cs @@ -6,7 +6,7 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Layout; using Avalonia.Media; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Dialogs; namespace PixiEditor.Models.Dialogs; diff --git a/src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs b/src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs index 2569ace5f..0883690e3 100644 --- a/src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs +++ b/src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs @@ -5,9 +5,9 @@ using PixiEditor.ChangeableDocument.Actions.Generated; using PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using PixiEditor.ChangeableDocument.Enums; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Handlers; using PixiEditor.Models.Layers; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.DocumentModels; #nullable enable diff --git a/src/PixiEditor/Models/DocumentModels/Public/DocumentOperationsModule.cs b/src/PixiEditor/Models/DocumentModels/Public/DocumentOperationsModule.cs index a5e8dd3c7..36759d420 100644 --- a/src/PixiEditor/Models/DocumentModels/Public/DocumentOperationsModule.cs +++ b/src/PixiEditor/Models/DocumentModels/Public/DocumentOperationsModule.cs @@ -310,7 +310,7 @@ internal class DocumentOperationsModule : IDocumentOperations /// Where the existing content should be put public void ResizeCanvas(VecI newSize, ResizeAnchor anchor) { - if (Internals.ChangeController.IsBlockingChangeActive || newSize.X > 9999 || newSize.Y > 9999 || + if (Internals.ChangeController.IsBlockingChangeActive || newSize.X > Constants.MaxCanvasSize || newSize.Y > Constants.MaxCanvasSize || newSize.X < 1 || newSize.Y < 1) return; diff --git a/src/PixiEditor/Models/ExceptionHandling/CrashReport.cs b/src/PixiEditor/Models/ExceptionHandling/CrashReport.cs index 68f644eba..036a04376 100644 --- a/src/PixiEditor/Models/ExceptionHandling/CrashReport.cs +++ b/src/PixiEditor/Models/ExceptionHandling/CrashReport.cs @@ -4,7 +4,6 @@ using System.IO.Compression; using System.Reflection; using System.Text; using Newtonsoft.Json; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences; using PixiEditor.Extensions.CommonApi.UserPreferences.Settings.PixiEditor; using PixiEditor.Helpers; @@ -16,6 +15,7 @@ using PixiEditor.Models.Commands; using PixiEditor.Models.DocumentModels.Autosave; using PixiEditor.OperatingSystem; using PixiEditor.Parser; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels; using PixiEditor.ViewModels.Document; using PixiEditor.Views; diff --git a/src/PixiEditor/Models/ExtensionServices/DocumentProvider.cs b/src/PixiEditor/Models/ExtensionServices/DocumentProvider.cs index 51c1b1642..c6bf72cbb 100644 --- a/src/PixiEditor/Models/ExtensionServices/DocumentProvider.cs +++ b/src/PixiEditor/Models/ExtensionServices/DocumentProvider.cs @@ -1,3 +1,4 @@ +using PixiEditor.Extensions.CommonApi.Documents; using PixiEditor.Extensions.CommonApi.IO; using PixiEditor.Models.IO; using PixiEditor.ViewModels; @@ -7,6 +8,7 @@ namespace PixiEditor.Models.ExtensionServices; internal class DocumentProvider : IDocumentProvider { + public IDocument? ActiveDocument => fileViewModel.Owner.DocumentManagerSubViewModel.ActiveDocument; private FileViewModel fileViewModel; public DocumentProvider(FileViewModel fileViewModel) @@ -14,8 +16,14 @@ internal class DocumentProvider : IDocumentProvider this.fileViewModel = fileViewModel; } - public void ImportFile(string path, bool associatePath = true) + public IDocument ImportFile(string path, bool associatePath = true) { - fileViewModel.OpenFromPath(path, associatePath); + return fileViewModel.OpenFromPath(path, associatePath); + } + + public IDocument? GetDocument(Guid id) + { + var document = fileViewModel.Owner.DocumentManagerSubViewModel.Documents.FirstOrDefault(x => x.Id == id); + return document; } } diff --git a/src/PixiEditor/Models/ExtensionServices/WindowProvider.cs b/src/PixiEditor/Models/ExtensionServices/WindowProvider.cs index 3beff2d79..72a6b1a7e 100644 --- a/src/PixiEditor/Models/ExtensionServices/WindowProvider.cs +++ b/src/PixiEditor/Models/ExtensionServices/WindowProvider.cs @@ -1,11 +1,11 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.Windowing; using PixiEditor.Extensions.Helpers; using PixiEditor.Extensions.Runtime; using PixiEditor.Extensions.Windowing; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Dialogs; namespace PixiEditor.Models.ExtensionServices; diff --git a/src/PixiEditor/Models/Files/BmpFileType.cs b/src/PixiEditor/Models/Files/BmpFileType.cs index 01bd63cd7..3c9b7cd4e 100644 --- a/src/PixiEditor/Models/Files/BmpFileType.cs +++ b/src/PixiEditor/Models/Files/BmpFileType.cs @@ -1,6 +1,6 @@ using Avalonia.Media; using Drawie.Backend.Core.Surfaces; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/GifFileType.cs b/src/PixiEditor/Models/Files/GifFileType.cs index e5765869c..536bbcdec 100644 --- a/src/PixiEditor/Models/Files/GifFileType.cs +++ b/src/PixiEditor/Models/Files/GifFileType.cs @@ -1,5 +1,5 @@ using Avalonia.Media; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/ImageFileType.cs b/src/PixiEditor/Models/Files/ImageFileType.cs index b576888d9..de34d1ea9 100644 --- a/src/PixiEditor/Models/Files/ImageFileType.cs +++ b/src/PixiEditor/Models/Files/ImageFileType.cs @@ -5,10 +5,10 @@ using Drawie.Backend.Core; using Drawie.Backend.Core.Bridge; using Drawie.Backend.Core.ColorsImpl; using Drawie.Backend.Core.Surfaces; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.IO; using PixiEditor.Models.IO.FileEncoders; using Drawie.Numerics; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/JpegFileType.cs b/src/PixiEditor/Models/Files/JpegFileType.cs index 8f5ef857b..c7d20745d 100644 --- a/src/PixiEditor/Models/Files/JpegFileType.cs +++ b/src/PixiEditor/Models/Files/JpegFileType.cs @@ -1,6 +1,6 @@ using Avalonia.Media; using Drawie.Backend.Core.Surfaces; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/Mp4FileType.cs b/src/PixiEditor/Models/Files/Mp4FileType.cs index 056f16f99..27ef746a6 100644 --- a/src/PixiEditor/Models/Files/Mp4FileType.cs +++ b/src/PixiEditor/Models/Files/Mp4FileType.cs @@ -1,4 +1,4 @@ -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/OtfFileType.cs b/src/PixiEditor/Models/Files/OtfFileType.cs index 4a8ea787d..3c4cc80f8 100644 --- a/src/PixiEditor/Models/Files/OtfFileType.cs +++ b/src/PixiEditor/Models/Files/OtfFileType.cs @@ -1,5 +1,5 @@ -using PixiEditor.Extensions.Common.Localization; -using PixiEditor.Models.IO; +using PixiEditor.Models.IO; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/PixiFileType.cs b/src/PixiEditor/Models/Files/PixiFileType.cs index b0c1ac791..9ab1be68a 100644 --- a/src/PixiEditor/Models/Files/PixiFileType.cs +++ b/src/PixiEditor/Models/Files/PixiFileType.cs @@ -1,9 +1,9 @@ using Avalonia.Media; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.IO; using Drawie.Numerics; using PixiEditor.Helpers; using PixiEditor.Models.ExceptionHandling; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/PngFileType.cs b/src/PixiEditor/Models/Files/PngFileType.cs index 2c2f9d3d8..c439738b1 100644 --- a/src/PixiEditor/Models/Files/PngFileType.cs +++ b/src/PixiEditor/Models/Files/PngFileType.cs @@ -1,6 +1,6 @@ using Avalonia.Media; using Drawie.Backend.Core.Surfaces; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/SvgFileType.cs b/src/PixiEditor/Models/Files/SvgFileType.cs index 39e3cff9f..4dbefe300 100644 --- a/src/PixiEditor/Models/Files/SvgFileType.cs +++ b/src/PixiEditor/Models/Files/SvgFileType.cs @@ -3,10 +3,10 @@ using PixiEditor.ChangeableDocument.Rendering; using PixiEditor.Models.Handlers; using PixiEditor.Models.IO; using Drawie.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.SVG; using PixiEditor.SVG.Elements; using PixiEditor.SVG.Features; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/Models/Files/TtfFileType.cs b/src/PixiEditor/Models/Files/TtfFileType.cs index 3390c4a9d..27f5b7887 100644 --- a/src/PixiEditor/Models/Files/TtfFileType.cs +++ b/src/PixiEditor/Models/Files/TtfFileType.cs @@ -1,5 +1,5 @@ -using PixiEditor.Extensions.Common.Localization; -using PixiEditor.Models.IO; +using PixiEditor.Models.IO; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/VideoFileType.cs b/src/PixiEditor/Models/Files/VideoFileType.cs index 45555be13..d71eec6ec 100644 --- a/src/PixiEditor/Models/Files/VideoFileType.cs +++ b/src/PixiEditor/Models/Files/VideoFileType.cs @@ -1,7 +1,7 @@ using Drawie.Backend.Core; using Drawie.Backend.Core.Surfaces.ImageData; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.IO; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Files/WebpFileType.cs b/src/PixiEditor/Models/Files/WebpFileType.cs index e1c15d385..8d3566e86 100644 --- a/src/PixiEditor/Models/Files/WebpFileType.cs +++ b/src/PixiEditor/Models/Files/WebpFileType.cs @@ -1,6 +1,6 @@ using Avalonia.Media; using Drawie.Backend.Core.Surfaces; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Files; diff --git a/src/PixiEditor/Models/Handlers/IDocument.cs b/src/PixiEditor/Models/Handlers/IDocument.cs index 4e4499bf0..1c16fc875 100644 --- a/src/PixiEditor/Models/Handlers/IDocument.cs +++ b/src/PixiEditor/Models/Handlers/IDocument.cs @@ -22,7 +22,7 @@ using PixiEditor.Models.DocumentPassthroughActions; namespace PixiEditor.Models.Handlers; -internal interface IDocument : IHandler +internal interface IDocument : IHandler, Extensions.CommonApi.Documents.IDocument { public Guid Id { get; } public ObservableRangeCollection Palette { get; set; } diff --git a/src/PixiEditor/Models/Handlers/IToolHandler.cs b/src/PixiEditor/Models/Handlers/IToolHandler.cs index b26aedf8b..42554267e 100644 --- a/src/PixiEditor/Models/Handlers/IToolHandler.cs +++ b/src/PixiEditor/Models/Handlers/IToolHandler.cs @@ -1,8 +1,8 @@ using Avalonia.Input; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Handlers.Toolbars; using Drawie.Numerics; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Handlers; diff --git a/src/PixiEditor/Models/IO/CustomDocumentFormats/SvgDocumentBuilder.cs b/src/PixiEditor/Models/IO/CustomDocumentFormats/SvgDocumentBuilder.cs index a565c98cf..c88a10425 100644 --- a/src/PixiEditor/Models/IO/CustomDocumentFormats/SvgDocumentBuilder.cs +++ b/src/PixiEditor/Models/IO/CustomDocumentFormats/SvgDocumentBuilder.cs @@ -10,7 +10,6 @@ using Drawie.Numerics; using PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes.Shapes.Data; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Helpers; using PixiEditor.Models.Dialogs; using PixiEditor.Parser.Graph; @@ -18,6 +17,7 @@ using PixiEditor.SVG; using PixiEditor.SVG.Elements; using PixiEditor.SVG.Enums; using PixiEditor.SVG.Exceptions; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.Tools; namespace PixiEditor.Models.IO.CustomDocumentFormats; diff --git a/src/PixiEditor/Models/IO/FileTypeDialogDataSet.cs b/src/PixiEditor/Models/IO/FileTypeDialogDataSet.cs index 1930dd5b4..9b6a41cc1 100644 --- a/src/PixiEditor/Models/IO/FileTypeDialogDataSet.cs +++ b/src/PixiEditor/Models/IO/FileTypeDialogDataSet.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; using Avalonia.Platform.Storage; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Helpers; using PixiEditor.Models.Files; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.IO; diff --git a/src/PixiEditor/Models/IO/Importer.cs b/src/PixiEditor/Models/IO/Importer.cs index e4a69559f..3fbef005b 100644 --- a/src/PixiEditor/Models/IO/Importer.cs +++ b/src/PixiEditor/Models/IO/Importer.cs @@ -11,12 +11,12 @@ using Drawie.Backend.Core.Surfaces; using Drawie.Backend.Core.Surfaces.ImageData; using Drawie.Backend.Core.Surfaces.PaintImpl; using PixiEditor.Exceptions; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; using PixiEditor.Helpers; using Drawie.Numerics; using PixiEditor.Parser; using PixiEditor.Parser.Old.PixiV4; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using Bitmap = Avalonia.Media.Imaging.Bitmap; using BlendMode = Drawie.Backend.Core.Surfaces.BlendMode; diff --git a/src/PixiEditor/Models/IO/PaletteParsers/JascPalFile/JascFileException.cs b/src/PixiEditor/Models/IO/PaletteParsers/JascPalFile/JascFileException.cs index 743e9338c..d2f66c56d 100644 --- a/src/PixiEditor/Models/IO/PaletteParsers/JascPalFile/JascFileException.cs +++ b/src/PixiEditor/Models/IO/PaletteParsers/JascPalFile/JascFileException.cs @@ -1,6 +1,6 @@ using System.Runtime.Serialization; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.IO.PaletteParsers.JascPalFile; diff --git a/src/PixiEditor/Models/Input/KeyCombination.cs b/src/PixiEditor/Models/Input/KeyCombination.cs index f0f4f6deb..d69b3bb50 100644 --- a/src/PixiEditor/Models/Input/KeyCombination.cs +++ b/src/PixiEditor/Models/Input/KeyCombination.cs @@ -2,9 +2,9 @@ using System.Linq; using System.Text; using Avalonia.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Helpers; using PixiEditor.Helpers; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Input; diff --git a/src/PixiEditor/Models/Localization/LocalizationProvider.cs b/src/PixiEditor/Models/Localization/LocalizationProvider.cs index d2460cfa1..7379ba501 100644 --- a/src/PixiEditor/Models/Localization/LocalizationProvider.cs +++ b/src/PixiEditor/Models/Localization/LocalizationProvider.cs @@ -6,9 +6,9 @@ using Avalonia.Platform; using Newtonsoft.Json; using PixiEditor.Helpers.Extensions; using PixiEditor.Extensions; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Runtime; using PixiEditor.Models.IO; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Localization; diff --git a/src/PixiEditor/Models/Serialization/Factories/TextSerializationFactory.cs b/src/PixiEditor/Models/Serialization/Factories/TextSerializationFactory.cs index 36ee0fd82..a538ff74a 100644 --- a/src/PixiEditor/Models/Serialization/Factories/TextSerializationFactory.cs +++ b/src/PixiEditor/Models/Serialization/Factories/TextSerializationFactory.cs @@ -6,9 +6,9 @@ using Drawie.Backend.Core.Text; using Drawie.Backend.Core.Vector; using Drawie.Numerics; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes.Shapes.Data; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Controllers; using PixiEditor.Models.IO; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Serialization.Factories; diff --git a/src/PixiEditor/Models/Services/NewsFeed/News.cs b/src/PixiEditor/Models/Services/NewsFeed/News.cs index 84277181f..af9f248ad 100644 --- a/src/PixiEditor/Models/Services/NewsFeed/News.cs +++ b/src/PixiEditor/Models/Services/NewsFeed/News.cs @@ -6,6 +6,7 @@ using Newtonsoft.Json; using PixiEditor.Extensions.Helpers; using PixiEditor.Helpers.Converters.JsonConverters; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Models.Services.NewsFeed; diff --git a/src/PixiEditor/PixiEditor.csproj b/src/PixiEditor/PixiEditor.csproj index 6279e0c4b..30e07d628 100644 --- a/src/PixiEditor/PixiEditor.csproj +++ b/src/PixiEditor/PixiEditor.csproj @@ -134,25 +134,6 @@ - - - PercentSettingView.axaml - Code - - - FontFamilySettingView.axaml - Code - - - ColorPropertyView.axaml - Code - - - LazyDocumentTemplate.axaml - Code - - - diff --git a/src/PixiEditor/Styles/PixiEditorPopupTemplate.axaml b/src/PixiEditor/Styles/PixiEditorPopupTemplate.axaml index 76ecd71eb..4e0f3bbc6 100644 --- a/src/PixiEditor/Styles/PixiEditorPopupTemplate.axaml +++ b/src/PixiEditor/Styles/PixiEditorPopupTemplate.axaml @@ -4,7 +4,8 @@ xmlns:behaviours="clr-namespace:PixiEditor.Helpers.Behaviours" xmlns:markupExtensions="clr-namespace:PixiEditor.Helpers.MarkupExtensions" xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions" - xmlns:platform="clr-namespace:Avalonia.Platform;assembly=Avalonia.Controls"> + xmlns:platform="clr-namespace:Avalonia.Platform;assembly=Avalonia.Controls" + xmlns:localization="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common"> @@ -41,7 +42,7 @@ - + diff --git a/src/PixiEditor/Styles/Templates/NodePicker.axaml b/src/PixiEditor/Styles/Templates/NodePicker.axaml index 089392f0c..929a49223 100644 --- a/src/PixiEditor/Styles/Templates/NodePicker.axaml +++ b/src/PixiEditor/Styles/Templates/NodePicker.axaml @@ -2,7 +2,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:nodes="clr-namespace:PixiEditor.Views.Nodes" xmlns:visuals="clr-namespace:PixiEditor.Views.Visuals" - xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions" + xmlns:ui="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common" xmlns:input="clr-namespace:PixiEditor.Views.Input" xmlns:nodes1="clr-namespace:PixiEditor.ViewModels.Nodes"> @@ -33,7 +33,7 @@ - + - + diff --git a/src/PixiEditor/Styles/Templates/NodePropertyViewTemplate.axaml b/src/PixiEditor/Styles/Templates/NodePropertyViewTemplate.axaml index 47a7bd06f..f3cf70ecf 100644 --- a/src/PixiEditor/Styles/Templates/NodePropertyViewTemplate.axaml +++ b/src/PixiEditor/Styles/Templates/NodePropertyViewTemplate.axaml @@ -1,7 +1,7 @@  - - - + + + @@ -52,7 +53,7 @@ - - + Name="PART_PlayToggle" + IsChecked="{Binding IsPlaying, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" /> diff --git a/src/PixiEditor/ViewModels/CrashReportViewModel.cs b/src/PixiEditor/ViewModels/CrashReportViewModel.cs index 8608c7f8a..a9e97c4bc 100644 --- a/src/PixiEditor/ViewModels/CrashReportViewModel.cs +++ b/src/PixiEditor/ViewModels/CrashReportViewModel.cs @@ -3,12 +3,12 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using CommunityToolkit.Mvvm.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Helpers; using PixiEditor.Initialization; using PixiEditor.Models.Controllers; using PixiEditor.Models.Dialogs; using PixiEditor.Models.ExceptionHandling; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views; using PixiEditor.Views.Dialogs; diff --git a/src/PixiEditor/ViewModels/Dock/ChannelsDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/ChannelsDockViewModel.cs index 466f0759e..e7d3a10ca 100644 --- a/src/PixiEditor/ViewModels/Dock/ChannelsDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/ChannelsDockViewModel.cs @@ -1,7 +1,7 @@ using System.ComponentModel; using CommunityToolkit.Mvvm.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.DocumentModels; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.SubViewModels; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Dock/ColorPickerDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/ColorPickerDockViewModel.cs index 369035018..14ab16d12 100644 --- a/src/PixiEditor/ViewModels/Dock/ColorPickerDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/ColorPickerDockViewModel.cs @@ -3,8 +3,8 @@ using Avalonia.Controls; using Avalonia.Media; using Avalonia.Svg.Skia; using PixiEditor.Helpers.Converters; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.SubViewModels; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Dock/ColorSlidersDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/ColorSlidersDockViewModel.cs index 8c7d4510f..061a0b847 100644 --- a/src/PixiEditor/ViewModels/Dock/ColorSlidersDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/ColorSlidersDockViewModel.cs @@ -1,8 +1,8 @@ using Avalonia; using Avalonia.Media; using PixiEditor.Helpers.Converters; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.SubViewModels; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Dock/DocumentPreviewDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/DocumentPreviewDockViewModel.cs index d0ae74410..669addb59 100644 --- a/src/PixiEditor/ViewModels/Dock/DocumentPreviewDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/DocumentPreviewDockViewModel.cs @@ -1,7 +1,7 @@ using Avalonia.Media; using PixiEditor.Helpers.Converters; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.SubViewModels; diff --git a/src/PixiEditor/ViewModels/Dock/LayersDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/LayersDockViewModel.cs index 2b3ae0d62..7c27051f1 100644 --- a/src/PixiEditor/ViewModels/Dock/LayersDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/LayersDockViewModel.cs @@ -2,8 +2,8 @@ using PixiDocks.Core.Docking; using PixiDocks.Core.Docking.Events; using PixiEditor.Helpers.Converters; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Dock/NodeGraphDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/NodeGraphDockViewModel.cs index 524e80491..04d228fb4 100644 --- a/src/PixiEditor/ViewModels/Dock/NodeGraphDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/NodeGraphDockViewModel.cs @@ -1,8 +1,8 @@ using Avalonia.Input; using PixiDocks.Core.Docking.Events; using PixiEditor.Models.Commands.Attributes.Commands; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Dock/PaletteViewerDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/PaletteViewerDockViewModel.cs index 7b813ab80..4e6aafad0 100644 --- a/src/PixiEditor/ViewModels/Dock/PaletteViewerDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/PaletteViewerDockViewModel.cs @@ -1,6 +1,6 @@ using PixiEditor.Helpers.Converters; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.SubViewModels; diff --git a/src/PixiEditor/ViewModels/Dock/SwatchesDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/SwatchesDockViewModel.cs index 775d630fd..b0452f75f 100644 --- a/src/PixiEditor/ViewModels/Dock/SwatchesDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/SwatchesDockViewModel.cs @@ -1,7 +1,7 @@ using Avalonia; using PixiEditor.Helpers.Converters; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Dock/TimelineDockViewModel.cs b/src/PixiEditor/ViewModels/Dock/TimelineDockViewModel.cs index f48354019..39c853953 100644 --- a/src/PixiEditor/ViewModels/Dock/TimelineDockViewModel.cs +++ b/src/PixiEditor/ViewModels/Dock/TimelineDockViewModel.cs @@ -1,6 +1,6 @@ using PixiDocks.Core.Docking.Events; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.ViewModels.Dock; diff --git a/src/PixiEditor/ViewModels/Document/DocumentManagerViewModel.cs b/src/PixiEditor/ViewModels/Document/DocumentManagerViewModel.cs index 417db7459..c72fae1f0 100644 --- a/src/PixiEditor/ViewModels/Document/DocumentManagerViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/DocumentManagerViewModel.cs @@ -207,7 +207,6 @@ internal class DocumentManagerViewModel : SubViewModel, IDocument } } - [Command.Basic("PixiEditor.Document.ResizeDocument", false, "RESIZE_DOCUMENT", "RESIZE_DOCUMENT", CanExecute = "PixiEditor.HasDocument", Key = Key.I, Modifiers = KeyModifiers.Control | KeyModifiers.Shift, Icon = PixiPerfectIcons.Resize, MenuItemPath = "IMAGE/RESIZE_IMAGE", MenuItemOrder = 0, AnalyticsTrack = true)] diff --git a/src/PixiEditor/ViewModels/Document/DocumentViewModel.cs b/src/PixiEditor/ViewModels/Document/DocumentViewModel.cs index 5e18dd34e..12b9a9cd3 100644 --- a/src/PixiEditor/ViewModels/Document/DocumentViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/DocumentViewModel.cs @@ -18,7 +18,6 @@ using Drawie.Backend.Core.Numerics; using Drawie.Backend.Core.Surfaces.ImageData; using Drawie.Backend.Core.Surfaces.PaintImpl; using Drawie.Backend.Core.Vector; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.Palettes; using PixiEditor.Helpers; using PixiEditor.Helpers.Collections; @@ -38,6 +37,7 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes.Workspace; using PixiEditor.Models.IO; using PixiEditor.Parser; using PixiEditor.Parser.Skia; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document.Nodes.Workspace; using PixiEditor.ViewModels.Document.TransformOverlays; using PixiEditor.Views.Overlays.SymmetryOverlay; @@ -1325,4 +1325,9 @@ internal partial class DocumentViewModel : PixiObservableObject, IDocument return size; } + + void Extensions.CommonApi.Documents.IDocument.Resize(int width, int height) + { + Operations.ResizeImage(new VecI(width, height), ResamplingMethod.NearestNeighbor); + } } diff --git a/src/PixiEditor/ViewModels/Document/Nodes/FolderNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/FolderNodeViewModel.cs index cb6bbc799..43a0dbdb1 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/FolderNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/FolderNodeViewModel.cs @@ -1,6 +1,5 @@ using System.Collections.ObjectModel; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Handlers; using PixiEditor.ViewModels.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/LerpColorNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/LerpColorNodeViewModel.cs index 129acee81..b7b047e29 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/LerpColorNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/LerpColorNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/MathNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/MathNodeViewModel.cs index 092200a2a..40161647c 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/MathNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/MathNodeViewModel.cs @@ -1,9 +1,9 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using PixiEditor.ChangeableDocument.Enums; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Helpers; using PixiEditor.Models.Events; using PixiEditor.Models.Handlers; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Nodes; using PixiEditor.ViewModels.Nodes.Properties; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/MergeNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/MergeNodeViewModel.cs index 5dd209a3e..908abace7 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/MergeNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/MergeNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageLeftNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageLeftNodeViewModel.cs index c39bda885..bd21d739a 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageLeftNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageLeftNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageRightNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageRightNodeViewModel.cs index d41a29a9e..258d8a62a 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageRightNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/ModifyImageRightNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/NoiseNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/NoiseNodeViewModel.cs index 9bd05d09f..10d96e7da 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/NoiseNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/NoiseNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/OutputNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/OutputNodeViewModel.cs index ca12840f8..47ecba154 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/OutputNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/OutputNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/Nodes/SampleImageNodeViewModel.cs b/src/PixiEditor/ViewModels/Document/Nodes/SampleImageNodeViewModel.cs index 7783a43ae..cb17fe2b9 100644 --- a/src/PixiEditor/ViewModels/Document/Nodes/SampleImageNodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/Nodes/SampleImageNodeViewModel.cs @@ -1,5 +1,4 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.ViewModels.Nodes; namespace PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs b/src/PixiEditor/ViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs index d8a585f04..4c5fe21d4 100644 --- a/src/PixiEditor/ViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs +++ b/src/PixiEditor/ViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs @@ -4,13 +4,13 @@ using ChunkyImageLib.DataHolders; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Helpers; using PixiEditor.Helpers.UI; using PixiEditor.Models.DocumentModels; using PixiEditor.Models.Handlers; using Drawie.Numerics; using PixiEditor.Models.Controllers.InputDevice; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Overlays.TransformOverlay; namespace PixiEditor.ViewModels.Document.TransformOverlays; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBarViewModel.cs b/src/PixiEditor/ViewModels/Menu/MenuBarViewModel.cs index ef7e91f6a..1ec263246 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBarViewModel.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBarViewModel.cs @@ -4,12 +4,12 @@ using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Data; using Microsoft.Extensions.DependencyInjection; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.UI; using PixiEditor.Models.Commands; using PixiEditor.Models.Commands.Evaluators; using PixiEditor.Models.ExtensionServices; using PixiEditor.OperatingSystem; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.SubViewModels; using PixiEditor.ViewModels.SubViewModels.AdditionalContent; using Command = PixiEditor.Models.Commands.Commands.Command; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/FileExitMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/FileExitMenuBuilder.cs index 79e9bd513..45cd0b983 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/FileExitMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/FileExitMenuBuilder.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using Avalonia.Controls; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.UI; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views; namespace PixiEditor.ViewModels.Menu.MenuBuilders; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/OpenDockablesMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/OpenDockablesMenuBuilder.cs index f7b524b34..81fdac068 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/OpenDockablesMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/OpenDockablesMenuBuilder.cs @@ -6,6 +6,7 @@ using Avalonia.Media; using PixiEditor.Models.Commands; using PixiEditor.Extensions.UI; using PixiEditor.Helpers.Extensions; +using PixiEditor.UI.Common.Localization; using Dock_LayoutManager = PixiEditor.ViewModels.Dock.LayoutManager; using LayoutManager = PixiEditor.ViewModels.Dock.LayoutManager; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/RecentFilesMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/RecentFilesMenuBuilder.cs index b42b9a594..174107e2f 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/RecentFilesMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/RecentFilesMenuBuilder.cs @@ -6,6 +6,7 @@ using Avalonia.Styling; using PixiEditor.Extensions.UI; using PixiEditor.Models.UserData; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.SubViewModels; namespace PixiEditor.ViewModels.Menu.MenuBuilders; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/SymmetryMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/SymmetryMenuBuilder.cs index 2f0b6ad3b..c4e3ffe99 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/SymmetryMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/SymmetryMenuBuilder.cs @@ -10,6 +10,7 @@ using PixiEditor.Extensions.UI; using PixiEditor.Helpers.Extensions; using PixiEditor.UI.Common.Controls; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Menu.MenuBuilders; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleGridLinesMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleGridLinesMenuBuilder.cs index ec9fc8ab7..a50ef2373 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleGridLinesMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleGridLinesMenuBuilder.cs @@ -7,6 +7,7 @@ using PixiEditor.Extensions.UI; using PixiEditor.Helpers.Extensions; using PixiEditor.UI.Common.Controls; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Menu.MenuBuilders; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleHighResPreviewMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleHighResPreviewMenuBuilder.cs index 399da638f..30f77ef6b 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleHighResPreviewMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleHighResPreviewMenuBuilder.cs @@ -6,6 +6,7 @@ using PixiEditor.Extensions.UI; using PixiEditor.Helpers.Extensions; using PixiEditor.UI.Common.Controls; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Menu.MenuBuilders; diff --git a/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleSnappingMenuBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleSnappingMenuBuilder.cs index 76aee663b..7a24c4ce9 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleSnappingMenuBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuBuilders/ToggleSnappingMenuBuilder.cs @@ -6,6 +6,7 @@ using PixiEditor.Extensions.UI; using PixiEditor.Helpers.Extensions; using PixiEditor.UI.Common.Controls; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Menu.MenuBuilders; diff --git a/src/PixiEditor/ViewModels/Menu/MenuItemBuilder.cs b/src/PixiEditor/ViewModels/Menu/MenuItemBuilder.cs index 0da8f5c06..6819992bf 100644 --- a/src/PixiEditor/ViewModels/Menu/MenuItemBuilder.cs +++ b/src/PixiEditor/ViewModels/Menu/MenuItemBuilder.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using Avalonia; using Avalonia.Controls; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.UI; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Menu; diff --git a/src/PixiEditor/ViewModels/Nodes/NodeTypeInfo.cs b/src/PixiEditor/ViewModels/Nodes/NodeTypeInfo.cs index fe8bf835a..cfb7e3976 100644 --- a/src/PixiEditor/ViewModels/Nodes/NodeTypeInfo.cs +++ b/src/PixiEditor/ViewModels/Nodes/NodeTypeInfo.cs @@ -1,8 +1,8 @@ using System.Reflection; using PixiEditor.ChangeableDocument.Changeables.Graph; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Nodes; diff --git a/src/PixiEditor/ViewModels/Nodes/NodeViewModel.cs b/src/PixiEditor/ViewModels/Nodes/NodeViewModel.cs index 97097213a..e20a2d1de 100644 --- a/src/PixiEditor/ViewModels/Nodes/NodeViewModel.cs +++ b/src/PixiEditor/ViewModels/Nodes/NodeViewModel.cs @@ -12,12 +12,12 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using PixiEditor.ChangeableDocument.Changeables.Interfaces; using PixiEditor.ChangeableDocument.ChangeInfos.NodeGraph; using Drawie.Backend.Core; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.DocumentModels; using PixiEditor.Models.Handlers; using PixiEditor.Models.Rendering; using PixiEditor.Models.Structures; using Drawie.Numerics; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; namespace PixiEditor.ViewModels.Nodes; diff --git a/src/PixiEditor/ViewModels/Nodes/Properties/StringPropertyViewModel.cs b/src/PixiEditor/ViewModels/Nodes/Properties/StringPropertyViewModel.cs index 738ecb411..98a6c3a6b 100644 --- a/src/PixiEditor/ViewModels/Nodes/Properties/StringPropertyViewModel.cs +++ b/src/PixiEditor/ViewModels/Nodes/Properties/StringPropertyViewModel.cs @@ -2,12 +2,12 @@ using Avalonia.Interactivity; using Avalonia.Threading; using CommunityToolkit.Mvvm.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Helpers; using PixiEditor.Models.Dialogs; using PixiEditor.Models.Handlers; using PixiEditor.Models.IO; using PixiEditor.OperatingSystem; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Nodes.Properties; diff --git a/src/PixiEditor/ViewModels/SettingsWindowViewModel.cs b/src/PixiEditor/ViewModels/SettingsWindowViewModel.cs index ffd065fc3..1b8ee45eb 100644 --- a/src/PixiEditor/ViewModels/SettingsWindowViewModel.cs +++ b/src/PixiEditor/ViewModels/SettingsWindowViewModel.cs @@ -5,12 +5,12 @@ using System.Linq; using System.Threading.Tasks; using Avalonia.Platform.Storage; using CommunityToolkit.Mvvm.ComponentModel; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; using PixiEditor.Models.Commands; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Commands.Templates; using PixiEditor.Models.Dialogs; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.UserPreferences; using PixiEditor.Views; using PixiEditor.Views.Shortcuts; diff --git a/src/PixiEditor/ViewModels/SubViewModels/ColorsViewModel.cs b/src/PixiEditor/ViewModels/SubViewModels/ColorsViewModel.cs index dc365c7c8..abaa05155 100644 --- a/src/PixiEditor/ViewModels/SubViewModels/ColorsViewModel.cs +++ b/src/PixiEditor/ViewModels/SubViewModels/ColorsViewModel.cs @@ -12,7 +12,6 @@ using ColorPicker.Models; using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; using PixiEditor.Helpers.Extensions; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.Palettes; using PixiEditor.Extensions.CommonApi.Palettes.Parsers; using PixiEditor.Models.Commands.Attributes.Evaluators; @@ -24,6 +23,7 @@ using PixiEditor.Models.ExternalServices; using PixiEditor.Models.Handlers; using PixiEditor.Models.Palettes; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.Views.Dialogs; using PixiEditor.Views.Windows; diff --git a/src/PixiEditor/ViewModels/SubViewModels/DebugViewModel.cs b/src/PixiEditor/ViewModels/SubViewModels/DebugViewModel.cs index 2e4db518a..1fe409943 100644 --- a/src/PixiEditor/ViewModels/SubViewModels/DebugViewModel.cs +++ b/src/PixiEditor/ViewModels/SubViewModels/DebugViewModel.cs @@ -14,7 +14,6 @@ using DrawiEngine; using Newtonsoft.Json; using PixiEditor.Helpers.Extensions; using PixiEditor.Models.Commands.Attributes.Evaluators; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences.Settings; using PixiEditor.Extensions.CommonApi.UserPreferences.Settings.PixiEditor; using PixiEditor.Helpers; @@ -24,6 +23,7 @@ using PixiEditor.Models.Dialogs; using PixiEditor.Models.IO; using PixiEditor.OperatingSystem; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views; using PixiEditor.Views.Dialogs.Debugging; using PixiEditor.Views.Dialogs.Debugging.Localization; diff --git a/src/PixiEditor/ViewModels/SubViewModels/FileViewModel.cs b/src/PixiEditor/ViewModels/SubViewModels/FileViewModel.cs index d844e34a5..52ec4a230 100644 --- a/src/PixiEditor/ViewModels/SubViewModels/FileViewModel.cs +++ b/src/PixiEditor/ViewModels/SubViewModels/FileViewModel.cs @@ -7,7 +7,6 @@ using Avalonia.Threading; using Drawie.Backend.Core; using Drawie.Backend.Core.Surfaces.ImageData; using PixiEditor.Exceptions; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences.Settings.PixiEditor; using PixiEditor.Extensions.Exceptions; using PixiEditor.Helpers; @@ -27,6 +26,7 @@ using PixiEditor.Models.IO.CustomDocumentFormats; using PixiEditor.OperatingSystem; using PixiEditor.Parser; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.Views; using PixiEditor.Views.Dialogs; diff --git a/src/PixiEditor/ViewModels/SubViewModels/LayersViewModel.cs b/src/PixiEditor/ViewModels/SubViewModels/LayersViewModel.cs index dc61f525c..720cf83ed 100644 --- a/src/PixiEditor/ViewModels/SubViewModels/LayersViewModel.cs +++ b/src/PixiEditor/ViewModels/SubViewModels/LayersViewModel.cs @@ -15,7 +15,6 @@ using PixiEditor.Helpers.Converters; using PixiEditor.Helpers.Extensions; using PixiEditor.ChangeableDocument.Enums; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.Exceptions; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Commands.Attributes.Evaluators; @@ -26,6 +25,7 @@ using PixiEditor.Models.Layers; using Drawie.Numerics; using PixiEditor.Helpers; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Dock; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.Document.Nodes; diff --git a/src/PixiEditor/ViewModels/SubViewModels/ToolSetViewModel.cs b/src/PixiEditor/ViewModels/SubViewModels/ToolSetViewModel.cs index 74dd324ff..9254bfa4d 100644 --- a/src/PixiEditor/ViewModels/SubViewModels/ToolSetViewModel.cs +++ b/src/PixiEditor/ViewModels/SubViewModels/ToolSetViewModel.cs @@ -1,5 +1,4 @@ using System.Collections.ObjectModel; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Handlers; using PixiEditor.ViewModels.Tools; diff --git a/src/PixiEditor/ViewModels/SubViewModels/UpdateViewModel.cs b/src/PixiEditor/ViewModels/SubViewModels/UpdateViewModel.cs index 184d90c83..5a03dc3da 100644 --- a/src/PixiEditor/ViewModels/SubViewModels/UpdateViewModel.cs +++ b/src/PixiEditor/ViewModels/SubViewModels/UpdateViewModel.cs @@ -10,7 +10,6 @@ using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Threading; using CommunityToolkit.Mvvm.Input; using PixiEditor.Views.Dialogs; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences.Settings.PixiEditor; using PixiEditor.Helpers; using PixiEditor.Models.Commands.Attributes.Commands; @@ -18,6 +17,7 @@ using PixiEditor.Models.Dialogs; using PixiEditor.Models.IO; using PixiEditor.OperatingSystem; using PixiEditor.Platform; +using PixiEditor.UI.Common.Localization; using PixiEditor.UpdateModule; namespace PixiEditor.ViewModels.SubViewModels; diff --git a/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/FontFamilySettingViewModel.cs b/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/FontFamilySettingViewModel.cs index ce0bba6d1..d75ebfd77 100644 --- a/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/FontFamilySettingViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/FontFamilySettingViewModel.cs @@ -7,7 +7,6 @@ using Avalonia.Media.Fonts; using Avalonia.Platform.Storage; using CommunityToolkit.Mvvm.Input; using Drawie.Backend.Core.Text; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Controllers; using PixiEditor.Models.IO; using PixiEditor.ViewModels.UserPreferences; diff --git a/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/Setting.cs b/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/Setting.cs index d0f77ae12..f85ea558a 100644 --- a/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/Setting.cs +++ b/src/PixiEditor/ViewModels/Tools/ToolSettings/Settings/Setting.cs @@ -1,7 +1,7 @@ using Avalonia.Controls; using CommunityToolkit.Mvvm.ComponentModel; using DiscordRPC; -using PixiEditor.Extensions.Common.Localization; +using PixiEditor.UI.Common.Localization; #pragma warning disable SA1402 // File may only contain a single type, Justification: "Same class with generic value" diff --git a/src/PixiEditor/ViewModels/Tools/ToolSettings/Toolbars/TextToolbar.cs b/src/PixiEditor/ViewModels/Tools/ToolSettings/Toolbars/TextToolbar.cs index e6d23f764..fe55dc928 100644 --- a/src/PixiEditor/ViewModels/Tools/ToolSettings/Toolbars/TextToolbar.cs +++ b/src/PixiEditor/ViewModels/Tools/ToolSettings/Toolbars/TextToolbar.cs @@ -1,8 +1,8 @@ using Drawie.Backend.Core.Text; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Controllers; using PixiEditor.Models.Handlers.Toolbars; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Settings; namespace PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; diff --git a/src/PixiEditor/ViewModels/Tools/ToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/ToolViewModel.cs index d67d95a34..79cafdd72 100644 --- a/src/PixiEditor/ViewModels/Tools/ToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/ToolViewModel.cs @@ -4,11 +4,11 @@ using System.Runtime.CompilerServices; using Avalonia.Input; using CommunityToolkit.Mvvm.ComponentModel; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Toolbars; using PixiEditor.Models.Input; using Drawie.Numerics; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Settings; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/BrightnessToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/BrightnessToolViewModel.cs index f1e3e00b0..8646fcb0d 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/BrightnessToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/BrightnessToolViewModel.cs @@ -1,7 +1,6 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; @@ -9,6 +8,7 @@ using PixiEditor.Models.Tools; using Drawie.Numerics; using PixiEditor.Models.Handlers.Toolbars; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/ColorPickerToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/ColorPickerToolViewModel.cs index ab1bd11b1..c3098a62f 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/ColorPickerToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/ColorPickerToolViewModel.cs @@ -1,13 +1,13 @@ using System.ComponentModel; using Avalonia.Input; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using PixiEditor.Models.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.Document.TransformOverlays; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/EraserToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/EraserToolViewModel.cs index d54c6f5d7..866249fa7 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/EraserToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/EraserToolViewModel.cs @@ -1,13 +1,13 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.Models.Handlers.Toolbars; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/FloodFillToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/FloodFillToolViewModel.cs index 2c7cb084f..79e80671c 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/FloodFillToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/FloodFillToolViewModel.cs @@ -1,12 +1,12 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/LassoToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/LassoToolViewModel.cs index 46439678b..153be0758 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/LassoToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/LassoToolViewModel.cs @@ -1,11 +1,11 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Enums; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/MagicWandToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/MagicWandToolViewModel.cs index 45a86e33f..180baa0f2 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/MagicWandToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/MagicWandToolViewModel.cs @@ -1,13 +1,13 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Enums; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using PixiEditor.Models.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/MoveToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/MoveToolViewModel.cs index 4300d7c02..a723f8606 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/MoveToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/MoveToolViewModel.cs @@ -3,11 +3,11 @@ using ChunkyImageLib.DataHolders; using PixiEditor.Models.DocumentModels; using PixiEditor.Models.Handlers; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/MoveViewportToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/MoveViewportToolViewModel.cs index 3d85ac9b7..f828e6075 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/MoveViewportToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/MoveViewportToolViewModel.cs @@ -1,7 +1,7 @@ using Avalonia.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Overlays.BrushShapeOverlay; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/PenToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/PenToolViewModel.cs index c7e3a22e3..78b562a63 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/PenToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/PenToolViewModel.cs @@ -1,6 +1,5 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences.Settings.PixiEditor; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; @@ -9,6 +8,7 @@ using PixiEditor.Models.Input; using Drawie.Numerics; using PixiEditor.Models.Handlers.Toolbars; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Settings; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs index a9b55bc5f..2c43d6d45 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs @@ -1,12 +1,12 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs index eb29a5158..606754f3d 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs @@ -2,12 +2,12 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using PixiEditor.Views.Overlays.BrushShapeOverlay; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs index 6a50ebf57..ad8a1f357 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs @@ -1,12 +1,12 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/RotateViewportToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/RotateViewportToolViewModel.cs index 0972c62df..414025583 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/RotateViewportToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/RotateViewportToolViewModel.cs @@ -1,7 +1,7 @@ using Avalonia.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Overlays.BrushShapeOverlay; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/SelectToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/SelectToolViewModel.cs index 4f39b21f7..4e5de962e 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/SelectToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/SelectToolViewModel.cs @@ -1,12 +1,12 @@ using Avalonia.Input; using PixiEditor.ChangeableDocument.Enums; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers.Tools; using PixiEditor.Models.Position; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; using PixiEditor.Views.Overlays.BrushShapeOverlay; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/TextToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/TextToolViewModel.cs index 4ae5879ef..d724f031a 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/TextToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/TextToolViewModel.cs @@ -1,11 +1,11 @@ using Avalonia.Input; using Drawie.Numerics; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs index 143ac158d..aef858ff1 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs @@ -2,13 +2,13 @@ using ChunkyImageLib.DataHolders; using PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces.Shapes; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.DocumentModels; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs index 02cfb48b3..46bb2b573 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs @@ -5,13 +5,13 @@ using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes.Shapes.Data; using PixiEditor.Views.Overlays.BrushShapeOverlay; using Drawie.Backend.Core.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.DocumentModels; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs index 702b35c8a..abebfea8d 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/VectorPathToolViewModel.cs @@ -4,11 +4,11 @@ using Drawie.Backend.Core.Surfaces.PaintImpl; using Drawie.Backend.Core.Vector; using Drawie.Numerics; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs index bce255990..b7e29ba2e 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs @@ -2,13 +2,13 @@ using ChunkyImageLib.DataHolders; using PixiEditor.ChangeableDocument.Changeables.Graph.Interfaces.Shapes; using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.Models.DocumentModels; using PixiEditor.Models.Handlers; using PixiEditor.Models.Handlers.Tools; using Drawie.Numerics; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/Tools/Tools/ZoomToolViewModel.cs b/src/PixiEditor/ViewModels/Tools/Tools/ZoomToolViewModel.cs index 222c4a6b4..6c8c441a7 100644 --- a/src/PixiEditor/ViewModels/Tools/Tools/ZoomToolViewModel.cs +++ b/src/PixiEditor/ViewModels/Tools/Tools/ZoomToolViewModel.cs @@ -1,7 +1,7 @@ using Avalonia.Input; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands.Attributes.Commands; using PixiEditor.UI.Common.Fonts; +using PixiEditor.UI.Common.Localization; using PixiEditor.Views.Overlays.BrushShapeOverlay; namespace PixiEditor.ViewModels.Tools.Tools; diff --git a/src/PixiEditor/ViewModels/UserPreferences/OnboardingViewModel.cs b/src/PixiEditor/ViewModels/UserPreferences/OnboardingViewModel.cs index b97ae8501..ac41478de 100644 --- a/src/PixiEditor/ViewModels/UserPreferences/OnboardingViewModel.cs +++ b/src/PixiEditor/ViewModels/UserPreferences/OnboardingViewModel.cs @@ -3,10 +3,10 @@ using System.Windows.Input; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Drawie.Numerics; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Models.Commands; using PixiEditor.Models.Commands.Templates; using PixiEditor.Models.Handlers; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.SubViewModels; using PixiEditor.ViewModels.UserPreferences.Settings; using PixiEditor.Views.Shortcuts; diff --git a/src/PixiEditor/ViewModels/UserPreferences/Settings/GeneralSettings.cs b/src/PixiEditor/ViewModels/UserPreferences/Settings/GeneralSettings.cs index 18b2435be..9ab2102de 100644 --- a/src/PixiEditor/ViewModels/UserPreferences/Settings/GeneralSettings.cs +++ b/src/PixiEditor/ViewModels/UserPreferences/Settings/GeneralSettings.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.ViewModels.UserPreferences.Settings; diff --git a/src/PixiEditor/ViewModels/ViewModelMain.cs b/src/PixiEditor/ViewModels/ViewModelMain.cs index 410693862..58452c410 100644 --- a/src/PixiEditor/ViewModels/ViewModelMain.cs +++ b/src/PixiEditor/ViewModels/ViewModelMain.cs @@ -5,7 +5,6 @@ using Avalonia.Threading; using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; using Drawie.Backend.Core.ColorsImpl; -using PixiEditor.Extensions.Common.Localization; using PixiEditor.Extensions.CommonApi.UserPreferences; using PixiEditor.Helpers; using PixiEditor.Helpers.Collections; @@ -20,6 +19,7 @@ using PixiEditor.Models.ExtensionServices; using PixiEditor.Models.Files; using PixiEditor.Models.Handlers; using PixiEditor.OperatingSystem; +using PixiEditor.UI.Common.Localization; using PixiEditor.ViewModels.Document; using PixiEditor.ViewModels.Menu; using PixiEditor.ViewModels.SubViewModels; diff --git a/src/PixiEditor/Views/AllControlsPanel.axaml b/src/PixiEditor/Views/AllControlsPanel.axaml index 34c660ac3..91bcacdd3 100644 --- a/src/PixiEditor/Views/AllControlsPanel.axaml +++ b/src/PixiEditor/Views/AllControlsPanel.axaml @@ -3,7 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:dialogs="clr-namespace:Avalonia.Dialogs;assembly=Avalonia.Dialogs" - xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions" + xmlns:localization="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="PixiEditor.Views.AllControlsPanel" Background="{DynamicResource ThemeBackgroundBrush}"> @@ -18,7 +18,7 @@ - + diff --git a/src/PixiEditor/Views/Decorators/Chip.axaml.cs b/src/PixiEditor/Views/Decorators/Chip.axaml.cs index 7658b266a..3ac3a8428 100644 --- a/src/PixiEditor/Views/Decorators/Chip.axaml.cs +++ b/src/PixiEditor/Views/Decorators/Chip.axaml.cs @@ -2,6 +2,7 @@ using Avalonia.Controls; using Avalonia.Media; using PixiEditor.Extensions.UI; +using PixiEditor.UI.Common.Localization; namespace PixiEditor.Views.Decorators; diff --git a/src/PixiEditor/Views/Dialogs/AboutPopup.axaml b/src/PixiEditor/Views/Dialogs/AboutPopup.axaml index 48fae9060..8df20bb89 100644 --- a/src/PixiEditor/Views/Dialogs/AboutPopup.axaml +++ b/src/PixiEditor/Views/Dialogs/AboutPopup.axaml @@ -1,126 +1,140 @@ - - - - PixiEditor - - - - - + \ No newline at end of file diff --git a/src/PixiEditor/Views/Dialogs/NoticePopup.axaml b/src/PixiEditor/Views/Dialogs/NoticePopup.axaml index 9b9df70d2..a1d63c992 100644 --- a/src/PixiEditor/Views/Dialogs/NoticePopup.axaml +++ b/src/PixiEditor/Views/Dialogs/NoticePopup.axaml @@ -1,26 +1,26 @@  + x:ClassModifier="internal" + xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:ui="clr-namespace:PixiEditor.UI.Common.Localization;assembly=PixiEditor.UI.Common" + xmlns:dialogs="clr-namespace:PixiEditor.Views.Dialogs" + mc:Ignorable="d" + d:Title="Notice" Height="180" Width="400" MinHeight="180" MinWidth="400" + CanResize="False" + CanMinimize="False" + x:Name="popup" + ui:Translator.Key="{Binding ElementName=popup, Path=Title, Mode=OneTime}"> -