From e03509d88576682ddda6665f569f50e669d9ecbb Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 23 Jan 2023 15:41:42 +0800 Subject: [PATCH 1/5] feat: add menu infra. --- demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml | 20 +++++++++++++++++++ .../Pages/MenuDemo.axaml.cs | 18 +++++++++++++++++ src/Semi.Avalonia/Controls/Controls.axaml | 2 ++ src/Semi.Avalonia/Controls/Menu.axaml | 3 +++ .../Controls/MenuFlyoutPresenter.axaml | 3 +++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + src/Semi.Avalonia/Themes/Light/Menu.axaml | 3 +++ 7 files changed, 50 insertions(+) create mode 100644 demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml create mode 100644 demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/Menu.axaml create mode 100644 src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/Menu.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml new file mode 100644 index 0000000..7a52381 --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml @@ -0,0 +1,20 @@ + + + + + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml.cs new file mode 100644 index 0000000..698f0ee --- /dev/null +++ b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace Semi.Avalonia.Demo.Pages; + +public partial class MenuDemo : UserControl +{ + public MenuDemo() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } +} \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index 55699a6..3376d8b 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -13,6 +13,8 @@ + + diff --git a/src/Semi.Avalonia/Controls/Menu.axaml b/src/Semi.Avalonia/Controls/Menu.axaml new file mode 100644 index 0000000..9017e8d --- /dev/null +++ b/src/Semi.Avalonia/Controls/Menu.axaml @@ -0,0 +1,3 @@ + + + diff --git a/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml b/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml new file mode 100644 index 0000000..9017e8d --- /dev/null +++ b/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml @@ -0,0 +1,3 @@ + + + diff --git a/src/Semi.Avalonia/Themes/Light/Light.axaml b/src/Semi.Avalonia/Themes/Light/Light.axaml index 378b4d9..c9f723b 100644 --- a/src/Semi.Avalonia/Themes/Light/Light.axaml +++ b/src/Semi.Avalonia/Themes/Light/Light.axaml @@ -11,6 +11,7 @@ + diff --git a/src/Semi.Avalonia/Themes/Light/Menu.axaml b/src/Semi.Avalonia/Themes/Light/Menu.axaml new file mode 100644 index 0000000..9017e8d --- /dev/null +++ b/src/Semi.Avalonia/Themes/Light/Menu.axaml @@ -0,0 +1,3 @@ + + + From 30842b91506e72041feaf810030a7ac24ba78cfa Mon Sep 17 00:00:00 2001 From: rabbitism Date: Mon, 23 Jan 2023 22:46:16 +0800 Subject: [PATCH 2/5] feat: add default themes copy from fluent theme. --- demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml | 32 +- .../Semi.Avalonia.Demo.csproj | 2 +- demo/Semi.Avalonia.Demo/Views/MainView.axaml | 3 + src/Semi.Avalonia/Controls/Menu.axaml | 358 +++++++++++++++++- .../Controls/MenuFlyoutPresenter.axaml | 36 ++ 5 files changed, 423 insertions(+), 8 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml index 7a52381..6619598 100644 --- a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml @@ -9,12 +9,34 @@ mc:Ignorable="d"> - - - + + + + + + + + + + + + + + + + + + + + + - - diff --git a/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj b/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj index 01aa6e7..7dd67bb 100644 --- a/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj +++ b/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj @@ -13,7 +13,7 @@ - + diff --git a/demo/Semi.Avalonia.Demo/Views/MainView.axaml b/demo/Semi.Avalonia.Demo/Views/MainView.axaml index b224975..aaa69f0 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainView.axaml +++ b/demo/Semi.Avalonia.Demo/Views/MainView.axaml @@ -45,6 +45,9 @@ + + + diff --git a/src/Semi.Avalonia/Controls/Menu.axaml b/src/Semi.Avalonia/Controls/Menu.axaml index 9017e8d..6170dea 100644 --- a/src/Semi.Avalonia/Controls/Menu.axaml +++ b/src/Semi.Avalonia/Controls/Menu.axaml @@ -1,3 +1,357 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml b/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml index 9017e8d..aec3cc5 100644 --- a/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml +++ b/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml @@ -1,3 +1,39 @@ + + + + + + + + + + + + + + + + + + + + From 12c75c1573fdc912ad7c63426c64951b90c8f4aa Mon Sep 17 00:00:00 2001 From: rabbitism Date: Tue, 24 Jan 2023 00:38:58 +0800 Subject: [PATCH 3/5] feat: WIP some brushes and icon path data. Update height and width limitation. --- demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml | 38 ++++++ src/Semi.Avalonia/Controls/Menu.axaml | 117 ++++++++++-------- .../Controls/MenuFlyoutPresenter.axaml | 16 +-- src/Semi.Avalonia/Themes/Light/Menu.axaml | 32 ++++- 4 files changed, 145 insertions(+), 58 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml index 6619598..59e7353 100644 --- a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml @@ -37,6 +37,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/Menu.axaml b/src/Semi.Avalonia/Controls/Menu.axaml index 6170dea..b518470 100644 --- a/src/Semi.Avalonia/Controls/Menu.axaml +++ b/src/Semi.Avalonia/Controls/Menu.axaml @@ -8,14 +8,20 @@ - + + + + @@ -26,15 +32,11 @@ - - - + @@ -52,15 +55,11 @@ - - - + - + + + + + + + + + + + + + @@ -160,14 +180,18 @@ PlacementMode="Right" WindowManagerAddShadowHint="False"> + Background="{DynamicResource MenuFlyoutBackground}" + BorderBrush="{DynamicResource MenuFlyoutBorderBrush}" + BorderThickness="{DynamicResource MenuFlyoutBorderThickness}" + BoxShadow="{DynamicResource MenuFlyoutBorderBoxShadow}" + CornerRadius="{DynamicResource MenuFlyoutCornerRadius}"> - - + + - - + - + Background="{DynamicResource MenuFlyoutBackground}" + BorderBrush="{DynamicResource MenuFlyoutBorderBrush}" + BorderThickness="{DynamicResource MenuFlyoutBorderThickness}" + BoxShadow="{DynamicResource MenuFlyoutBorderBoxShadow}" + CornerRadius="{DynamicResource MenuFlyoutCornerRadius}"> + - + - - - - - + - - - @@ -275,8 +253,9 @@ + - + diff --git a/src/Semi.Avalonia/Themes/Light/Menu.axaml b/src/Semi.Avalonia/Themes/Light/Menu.axaml index f970dbf..2f5ebc2 100644 --- a/src/Semi.Avalonia/Themes/Light/Menu.axaml +++ b/src/Semi.Avalonia/Themes/Light/Menu.axaml @@ -6,6 +6,7 @@ M19.637 16.4369C19.0513 17.0227 18.1015 17.0227 17.5157 16.4369L11.8589 10.7801L6.20202 16.4369C5.61623 17.0227 4.66648 17.0227 4.0807 16.4369C3.49491 15.8511 3.49491 14.9014 4.0807 14.3156L10.7982 7.59809C11.384 7.01231 12.3337 7.01231 12.9195 7.59809L19.637 14.3156C20.2228 14.9014 20.2228 15.8511 19.637 16.4369Z M4.08045 7.59809C4.66624 7.01231 5.61599 7.01231 6.20177 7.59809L11.8586 13.2549L17.5155 7.59809C18.1013 7.01231 19.051 7.01231 19.6368 7.59809C20.2226 8.18388 20.2226 9.13363 19.6368 9.71941L12.9193 16.4369C12.3335 17.0227 11.3838 17.0227 10.798 16.4369L4.08045 9.71941C3.49467 9.13363 3.49467 8.18388 4.08045 7.59809Z + M7.43934 19.7957C6.85355 19.2099 6.85355 18.2601 7.43934 17.6744L13.0962 12.0175L7.43934 6.36065C6.85355 5.77486 6.85355 4.82511 7.43934 4.23933C8.02513 3.65354 8.97487 3.65354 9.56066 4.23933L16.2782 10.9568C16.864 11.5426 16.864 12.4924 16.2782 13.0782L9.56066 19.7957C8.97487 20.3815 8.02513 20.3815 7.43934 19.7957Z @@ -21,13 +22,25 @@ 600 - + - 8 4 + 8 4 1 2 + + 0 0 12 0 + 4 0 + + + + 4 0 + + + + + From dfcc8bc9bba894b841bb504426ffb6060b4c3107 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Tue, 24 Jan 2023 12:42:55 +0800 Subject: [PATCH 5/5] feat: update context menu and context flyout menu. add demos. --- demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml | 51 +++++++++++++++++++ src/Semi.Avalonia/Controls/ContextMenu.axaml | 39 ++++++++++++++ src/Semi.Avalonia/Controls/Controls.axaml | 1 + src/Semi.Avalonia/Controls/Menu.axaml | 2 - .../Controls/MenuFlyoutPresenter.axaml | 16 ++++-- 5 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 src/Semi.Avalonia/Controls/ContextMenu.axaml diff --git a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml index 76934fa..ab044b7 100644 --- a/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/MenuDemo.axaml @@ -73,5 +73,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/ContextMenu.axaml b/src/Semi.Avalonia/Controls/ContextMenu.axaml new file mode 100644 index 0000000..2d8f2c4 --- /dev/null +++ b/src/Semi.Avalonia/Controls/ContextMenu.axaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Semi.Avalonia/Controls/Controls.axaml b/src/Semi.Avalonia/Controls/Controls.axaml index 3376d8b..adce855 100644 --- a/src/Semi.Avalonia/Controls/Controls.axaml +++ b/src/Semi.Avalonia/Controls/Controls.axaml @@ -8,6 +8,7 @@ + diff --git a/src/Semi.Avalonia/Controls/Menu.axaml b/src/Semi.Avalonia/Controls/Menu.axaml index 4cb55e0..e2baad4 100644 --- a/src/Semi.Avalonia/Controls/Menu.axaml +++ b/src/Semi.Avalonia/Controls/Menu.axaml @@ -194,7 +194,6 @@ + CornerRadius="{DynamicResource MenuFlyoutCornerRadius}">