diff --git a/.gitmodules b/.gitmodules index 8ff476a1c..2010146a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "WoWPacketParser"] path = WoWPacketParser url = https://github.com/BAndysc/WoWPacketParser +[submodule "Prism.Avalonia"] + path = Prism.Avalonia + url = https://github.com/BAndysc/Prism.Avalonia diff --git a/Avalonia.props b/Avalonia.props index 7bff736bc..e80105b46 100644 --- a/Avalonia.props +++ b/Avalonia.props @@ -5,7 +5,7 @@ - + diff --git a/AvaloniaEdit b/AvaloniaEdit index b000803d4..db05f2c62 160000 --- a/AvaloniaEdit +++ b/AvaloniaEdit @@ -1 +1 @@ -Subproject commit b000803d4e0fd38236b4bbec6272faf3d86b10e7 +Subproject commit db05f2c624bec075aff50d253a90430e867c055b diff --git a/AvaloniaStyles/Controls/ExtendedWindow.cs b/AvaloniaStyles/Controls/ExtendedWindow.cs index ae58694ce..0ded54bd5 100644 --- a/AvaloniaStyles/Controls/ExtendedWindow.cs +++ b/AvaloniaStyles/Controls/ExtendedWindow.cs @@ -113,8 +113,7 @@ private void UpdateChromeHints(ExtendedWindowChrome chrome) } else { - ExtendClientAreaChromeHints &= ~ExtendClientAreaChromeHints.SystemChrome; - ExtendClientAreaChromeHints |= ExtendClientAreaChromeHints.NoChrome; + ExtendClientAreaChromeHints = ExtendClientAreaChromeHints.NoChrome; } } diff --git a/AvaloniaStyles/Controls/GroupingListBox.axaml.cs b/AvaloniaStyles/Controls/GroupingListBox.axaml.cs index d3ca20ac0..6726838c7 100644 --- a/AvaloniaStyles/Controls/GroupingListBox.axaml.cs +++ b/AvaloniaStyles/Controls/GroupingListBox.axaml.cs @@ -270,9 +270,9 @@ private void SelectIndex(ListBox listbox, int index) (listbox.ItemContainerGenerator.ContainerFromIndex(listbox.SelectedIndex)).Focus(); } - public static T? FindParent(IVisual obj) where T : Control + public static T? FindParent(IVisual? obj) where T : Control { - obj = obj.VisualParent; + obj = obj?.VisualParent; while (obj != null) { if (obj is T parent) diff --git a/AvaloniaStyles/Styles/BigSur/Button.xaml b/AvaloniaStyles/Styles/BigSur/Button.xaml index 9c3108bd1..114f43369 100644 --- a/AvaloniaStyles/Styles/BigSur/Button.xaml +++ b/AvaloniaStyles/Styles/BigSur/Button.xaml @@ -9,8 +9,11 @@ - + + diff --git a/AvaloniaStyles/Styles/BigSur/TextBox.xaml b/AvaloniaStyles/Styles/BigSur/TextBox.xaml index 2b479afbc..f92e987f0 100644 --- a/AvaloniaStyles/Styles/BigSur/TextBox.xaml +++ b/AvaloniaStyles/Styles/BigSur/TextBox.xaml @@ -2,6 +2,7 @@ xmlns:controls1="clr-namespace:AvaloniaStyles.Controls" xmlns:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit"> - - - diff --git a/AvaloniaStyles/Styles/BigSur/Window.xaml b/AvaloniaStyles/Styles/BigSur/Window.xaml index c5b7948bf..39c415216 100644 --- a/AvaloniaStyles/Styles/BigSur/Window.xaml +++ b/AvaloniaStyles/Styles/BigSur/Window.xaml @@ -153,22 +153,24 @@ - - - - - - - - - + + + + + + + + + + + diff --git a/AvaloniaStyles/Styles/Catalina/Button.xaml b/AvaloniaStyles/Styles/Catalina/Button.xaml index 93a3464f9..b7405e7e9 100644 --- a/AvaloniaStyles/Styles/Catalina/Button.xaml +++ b/AvaloniaStyles/Styles/Catalina/Button.xaml @@ -7,7 +7,7 @@ - diff --git a/AvaloniaStyles/Styles/Catalina/TextBox.xaml b/AvaloniaStyles/Styles/Catalina/TextBox.xaml index 2afb54474..10728593c 100644 --- a/AvaloniaStyles/Styles/Catalina/TextBox.xaml +++ b/AvaloniaStyles/Styles/Catalina/TextBox.xaml @@ -2,6 +2,7 @@ xmlns:controls1="clr-namespace:AvaloniaStyles.Controls" xmlns:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit"> - - diff --git a/Directory.Build.props b/Directory.Build.props index 084a9dc2c..7a421b194 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,6 +2,6 @@ CS0067,CS3021,CS1998,CA1416 - 0.10.0 + 0.10.7 \ No newline at end of file diff --git a/Dock b/Dock index 90efe5659..c321f6050 160000 --- a/Dock +++ b/Dock @@ -1 +1 @@ -Subproject commit 90efe5659df5cc6d16a3e6290608ab4221fcb665 +Subproject commit c321f605085f285c3476522b7c2f2057bd44a358 diff --git a/Prism.Avalonia b/Prism.Avalonia new file mode 160000 index 000000000..37cdcb891 --- /dev/null +++ b/Prism.Avalonia @@ -0,0 +1 @@ +Subproject commit 37cdcb891b519df6302c284d123973d81ba47981 diff --git a/WDE.Common.Avalonia/DnD/DragAndDrop.cs b/WDE.Common.Avalonia/DnD/DragAndDrop.cs index 05a1436eb..db3b2ff24 100644 --- a/WDE.Common.Avalonia/DnD/DragAndDrop.cs +++ b/WDE.Common.Avalonia/DnD/DragAndDrop.cs @@ -533,7 +533,7 @@ private static void OnTreeViewDrop(object? sender, DragEventArgs e) if (child == null) return default; - IVisual parentObject = child.VisualParent; + IVisual? parentObject = child.VisualParent; if (parentObject == null) return default; @@ -551,7 +551,7 @@ private static void OnTreeViewDrop(object? sender, DragEventArgs e) if (child == null) return default; - IVisual parentObject = child.VisualParent; + IVisual? parentObject = child.VisualParent; if (parentObject == null) return default; @@ -630,7 +630,7 @@ public void Update(TreeView treeView, ITreeItemContainerGenerator itemContainerG else { double y = 0; - IVisual parent = container.VisualParent; + IVisual? parent = container.VisualParent; while (parent != null && parent != treeView) { y += parent.Bounds.Y; diff --git a/WDE.Common.Avalonia/Utils/ViewBind.cs b/WDE.Common.Avalonia/Utils/ViewBind.cs index 7e4895977..35b1e4e8c 100644 --- a/WDE.Common.Avalonia/Utils/ViewBind.cs +++ b/WDE.Common.Avalonia/Utils/ViewBind.cs @@ -1,6 +1,7 @@ using System; using Avalonia; using Avalonia.Controls; +using Avalonia.Controls.Templates; using WDE.Common.Windows; namespace WDE.Common.Avalonia.Utils @@ -43,52 +44,31 @@ private static void SetContentProperty(IAvaloniaObject targetLocation, object? v } } } - - public class ToolBarBind + + public class ToolbarDataTemplate : IDataTemplate { - public static readonly AvaloniaProperty ModelProperty = AvaloniaProperty.RegisterAttached("Model", - typeof(ToolBarBind),coerce: OnModelChanged); - - public static object GetModel(Control control) => control.GetValue(ModelProperty); - public static void SetModel(Control control, object value) => control.SetValue(ModelProperty, value); - - public static bool TryResolveToolBar(object viewModel, out object? toolbar) + public static IDataTemplate Template { get; } = new ToolbarDataTemplate(); + public IControl Build(object param) { - toolbar = null; if (ViewBind.AppViewLocator != null && - ViewBind.AppViewLocator.TryResolveToolBar(viewModel.GetType(), out var toolbarType)) + ViewBind.AppViewLocator.TryResolveToolBar(param.GetType(), out var toolbarType)) { try { - toolbar = Activator.CreateInstance(toolbarType); + return (IControl)Activator.CreateInstance(toolbarType)!; } catch (Exception e) { Console.WriteLine(e); - toolbar = new TextBlock() { Text = e.ToString() }; + return new TextBlock() { Text = e.ToString() }; } } - - return toolbar != null; - } - - private static object OnModelChanged(IAvaloniaObject targetLocation, object viewModel) - { - if (TryResolveToolBar(viewModel, out var view)) - SetContentProperty(targetLocation, view); - else - SetContentProperty(targetLocation, new Panel()); - - return viewModel; + return new Control(); } - private static void SetContentProperty(IAvaloniaObject targetLocation, object? view) + public bool Match(object data) { - if (view != null && targetLocation != null) - { - Type? type = targetLocation.GetType(); - type.GetProperty("Content")?.SetValue(targetLocation, view); - } + return data is not IControl && data is not string; } } } \ No newline at end of file diff --git a/WoWDatabaseEditor.sln b/WoWDatabaseEditor.sln index 2fac4a70d..ba4da0b1c 100644 --- a/WoWDatabaseEditor.sln +++ b/WoWDatabaseEditor.sln @@ -159,6 +159,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.SkyFireMySqlDatabase", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.ProjectSkyFire", "WDE.ProjectSkyFire\WDE.ProjectSkyFire.csproj", "{2B3DFEB9-808F-4EC4-B848-3C2533B40B39}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prism.Avalonia", "Prism.Avalonia\src\Prism.Avalonia\Prism.Avalonia.csproj", "{B9498EA0-8186-4770-883A-B3CD9B1705BD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prism.Unity.Avalonia", "Prism.Avalonia\src\Prism.Unity.Avalonia\Prism.Unity.Avalonia.csproj", "{10ACA1B2-02DE-4B04-A151-9087989B6ADE}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.SourceCodeIntegrationEditor", "WDE.SourceCodeIntegrationEditor\WDE.SourceCodeIntegrationEditor.csproj", "{B0F1E33D-8CD2-4839-8F87-E8835F5F8D0B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.PacketViewer", "WDE.PacketViewer\WDE.PacketViewer.csproj", "{B421A454-BCA5-4B10-B0BD-BBEB5AAD3294}" @@ -477,6 +481,14 @@ Global {8B25EEAE-2DDD-4D62-A426-619FE21D2711}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B25EEAE-2DDD-4D62-A426-619FE21D2711}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B25EEAE-2DDD-4D62-A426-619FE21D2711}.Release|Any CPU.Build.0 = Release|Any CPU + {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Release|Any CPU.Build.0 = Release|Any CPU + {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs b/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs index f3ace200e..a31ee1a2d 100644 --- a/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs +++ b/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs @@ -11,8 +11,8 @@ namespace WoWDatabaseEditorCore.Avalonia.Docking { public class DockFactory : Factory { - public override IDocumentDock CreateDocumentDock() => new FocusAwareDocumentDock(); - public override IToolDock CreateToolDock() => new FocusAwareToolDock(); + public override IDocumentDock CreateDocumentDock() => new FocusAwareDocumentDock() {CanFloat = false}; + public override IToolDock CreateToolDock() => new FocusAwareToolDock() {CanFloat = false}; public void AddDocument(IDock layout, AvaloniaDocumentDockWrapper document) { @@ -36,6 +36,7 @@ public void AddTool(IDock layout, AvaloniaToolDockWrapper toolWrapper) Id = "tool", Title = "Tools", Proportion = 0.2f, + CanFloat = false }; AddDockable(layout, CreateSplitterDockable()); AddDockable(layout, toolDock); @@ -55,6 +56,7 @@ public override IRootDock CreateLayout() Title = "MainLayout", Proportion = 1, IsCollapsable = false, + CanFloat = false, Orientation = Orientation.Horizontal, ActiveDockable = null, VisibleDockables = CreateList diff --git a/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml b/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml index 4866184fa..239f9d6a9 100644 --- a/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml +++ b/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml @@ -55,7 +55,7 @@ - + diff --git a/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml b/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml index 9e3d928de..d9f2fceb0 100644 --- a/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml +++ b/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml @@ -43,7 +43,7 @@ - + diff --git a/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj b/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj index 9dd2ee33e..3cdfc937e 100644 --- a/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj +++ b/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj @@ -20,11 +20,11 @@ - +