Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port/extensions #12

Merged
merged 12 commits into from Apr 4, 2023
Merged

Port/extensions #12

merged 12 commits into from Apr 4, 2023

Conversation

michael-hawker
Copy link
Member

@michael-hawker michael-hawker commented Mar 23, 2023

Bringing over code for #6

This merges (most) of our extension code from both the MT.Uwp and MT.Uwp.UI packages for their Extensions folders. Makes a lot more sense in our new world for these to just be in one place to use from UWP or WinUI3 as most usage is for app development anyway and in WindowsAppSDK land the dependency is currently the same as WinUI is bundled in. Don't think non-app UWP developers would need access to the DispatcherQueue extensions? If so, the old packages should be fine. Curious on any thoughts from the past you may have @azchohfi (e.g. UWP APIs in scenarios where WinUI 2 wouldn't also just be referenced)?

  • Bring Source Code from WindowsAppSDK branch
  • Compared code to UWP branch of Toolkit
  • Compare code to Uno Fork (based off WinAppSDK) - in progress, enough to build where it mattered.
  • Brought over tests
  • Make tests build/update/run
  • Brought over docs
  • Update doc metadata to include new required metadata
  • Add example Sample to start

Think that's it for now?

As mentioned here, not bringing:

  • ApplicationViewExtensions
  • TitleBarExtensions
  • ScrollViewerExtensions.MiddleClickScrolling
  • WebViewExtensions

These classes don't really work in the WindowsAppSDK and have been disabled:

  • FrameworkElementExtensions.Cursor (ProtectedCursor instead, this was our whole Sizer/Splitter issue before)
  • StringExtensions.GetViewLocalized method as well

Also, there are a few things known not to work in Uno, so currently disabled in Uno:

  • TextBoxExtensions.SurfaceDial

But may add to this list, haven't gone through all the Uno001 warnings yet nor compare with Uno branch.

@michael-hawker
Copy link
Member Author

Compared with the Uno fork, most code is the same. Think they let Uno001 warnings bubble-up to app so folks can report what they need to Uno if it's something they're trying to use in the Toolkit. Should better understand that for the approach we want to take here as we treat them in errors in the CI.

Maybe this is a difference we want to tackle here between Labs and the main Toolkit at the moment?

Otherwise, just some small notes for future things to be aware of, otherwise nothing major. Biggest area that'll need some better investigation later is the string localization extensions... Especially between all four types of platforms, there's a lot of nuances here...

@michael-hawker michael-hawker mentioned this pull request Mar 28, 2023
Realizing that extension conflict is a bit unresolvable at the moment due to dependencies. Should get source package built so we can take as dependency in tooling and circle back? Probably need a flag to disable including, so that these tests use the source versions?
We need to come back and finish porting/fixing these tests once we sort out the namespace conflict by having the old versions in the dependencies of the tooling

See: CommunityToolkit/Tooling-Windows-Submodule#39
@michael-hawker
Copy link
Member Author

"D:\a\Windows\Windows\CommunityToolkit.AllComponents.sln" (default target) (1:2) ->
"D:\a\Windows\Windows\components\Extensions\samples\Extensions.Samples.csproj" (default target) (4:34) ->
"D:\a\Windows\Windows\components\Extensions\samples\Extensions.Samples.csproj" (Build target) (4:44) ->
"D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj" (default target) (5:60) ->
  D:\a\Windows\Windows\components\Extensions\src\Text\TextBoxExtensions.Mask.Internals.cs(176,9): error Uno0001: Microsoft.UI.Xaml.Controls.TextControlPasteEventArgs.Handled is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Text\StringExtensions.Localization.cs(101,34): error Uno0001: Windows.ApplicationModel.Resources.ResourceLoader.GetForUIContext(Windows.UI.UIContext) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(525,16): error Uno0001: Microsoft.UI.Composition.Visual.AnchorPoint is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(512,45): error Uno0001: Microsoft.UI.Composition.Compositor.CreateExpressionAnimation(string) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(514,13): error Uno0001: Microsoft.UI.Composition.CompositionAnimation.SetScalarParameter(string, float) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(515,13): error Uno0001: Microsoft.UI.Composition.CompositionAnimation.SetScalarParameter(string, float) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(531,9): error Uno0001: Microsoft.UI.Composition.Visual.AnchorPoint is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(560,44): error Uno0001: Microsoft.UI.Composition.CompositionObject.Properties is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(575,9): error Uno0001: Microsoft.UI.Xaml.Hosting.ElementCompositionPreview.SetIsTranslationEnabled(Microsoft.UI.Xaml.UIElement, bool) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(586,9): error Uno0001: Microsoft.UI.Composition.CompositionObject.Properties is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(604,16): error Uno0001: Microsoft.UI.Composition.Visual.RotationAngle is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(610,9): error Uno0001: Microsoft.UI.Composition.Visual.RotationAngle is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\SymbolIconExtension.cs(27,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.IsTextScaleFactorEnabled is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\SymbolIconExtension.cs(28,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.MirroredWhenRightToLeft is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\FontIconExtension.cs(32,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.IsTextScaleFactorEnabled is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\FontIconExtension.cs(33,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.MirroredWhenRightToLeft is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(32,17): error Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.DeselectRange(Microsoft.UI.Xaml.Data.ItemIndexRange) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(32,36): error Uno0001: Microsoft.UI.Xaml.Data.ItemIndexRange is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(50,17): error Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.DeselectRange(Microsoft.UI.Xaml.Data.ItemIndexRange) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(50,36): error Uno0001: Microsoft.UI.Xaml.Data.ItemIndexRange is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(68,17): error Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.SelectRange(Microsoft.UI.Xaml.Data.ItemIndexRange) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(68,34): error Uno0001: Microsoft.UI.Xaml.Data.ItemIndexRange is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Element\UIElementExtensions.cs(49,13): error Uno0001: Microsoft.UI.Composition.Visual.Clip is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]

Bunch of Uno0001 warnings turned errors. Think we turn it off for now? At least in this repo? I think if I put in our directory props, it should work now with the other fix. Thoughts @Arlodotexe @niels9001?

@niels9001
Copy link
Collaborator

"D:\a\Windows\Windows\CommunityToolkit.AllComponents.sln" (default target) (1:2) ->
"D:\a\Windows\Windows\components\Extensions\samples\Extensions.Samples.csproj" (default target) (4:34) ->
"D:\a\Windows\Windows\components\Extensions\samples\Extensions.Samples.csproj" (Build target) (4:44) ->
"D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj" (default target) (5:60) ->
  D:\a\Windows\Windows\components\Extensions\src\Text\TextBoxExtensions.Mask.Internals.cs(176,9): error Uno0001: Microsoft.UI.Xaml.Controls.TextControlPasteEventArgs.Handled is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Text\StringExtensions.Localization.cs(101,34): error Uno0001: Windows.ApplicationModel.Resources.ResourceLoader.GetForUIContext(Windows.UI.UIContext) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(525,16): error Uno0001: Microsoft.UI.Composition.Visual.AnchorPoint is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(512,45): error Uno0001: Microsoft.UI.Composition.Compositor.CreateExpressionAnimation(string) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(514,13): error Uno0001: Microsoft.UI.Composition.CompositionAnimation.SetScalarParameter(string, float) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(515,13): error Uno0001: Microsoft.UI.Composition.CompositionAnimation.SetScalarParameter(string, float) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(531,9): error Uno0001: Microsoft.UI.Composition.Visual.AnchorPoint is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(560,44): error Uno0001: Microsoft.UI.Composition.CompositionObject.Properties is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(575,9): error Uno0001: Microsoft.UI.Xaml.Hosting.ElementCompositionPreview.SetIsTranslationEnabled(Microsoft.UI.Xaml.UIElement, bool) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(586,9): error Uno0001: Microsoft.UI.Composition.CompositionObject.Properties is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(604,16): error Uno0001: Microsoft.UI.Composition.Visual.RotationAngle is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Media\VisualExtensions.cs(610,9): error Uno0001: Microsoft.UI.Composition.Visual.RotationAngle is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\SymbolIconExtension.cs(27,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.IsTextScaleFactorEnabled is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\SymbolIconExtension.cs(28,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.MirroredWhenRightToLeft is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\FontIconExtension.cs(32,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.IsTextScaleFactorEnabled is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Markup\FontIconExtension.cs(33,13): error Uno0001: Microsoft.UI.Xaml.Controls.FontIcon.MirroredWhenRightToLeft is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(32,17): error Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.DeselectRange(Microsoft.UI.Xaml.Data.ItemIndexRange) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(32,36): error Uno0001: Microsoft.UI.Xaml.Data.ItemIndexRange is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(50,17): error Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.DeselectRange(Microsoft.UI.Xaml.Data.ItemIndexRange) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(50,36): error Uno0001: Microsoft.UI.Xaml.Data.ItemIndexRange is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(68,17): error Uno0001: Microsoft.UI.Xaml.Controls.ListViewBase.SelectRange(Microsoft.UI.Xaml.Data.ItemIndexRange) is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\ListViewBase\ListViewExtensions.Selection.cs(68,34): error Uno0001: Microsoft.UI.Xaml.Data.ItemIndexRange is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]
  D:\a\Windows\Windows\components\Extensions\src\Element\UIElementExtensions.cs(49,13): error Uno0001: Microsoft.UI.Composition.Visual.Clip is not implemented in Uno [D:\a\Windows\Windows\components\Extensions\src\CommunityToolkit.WinUI.Extensions.csproj]

Bunch of Uno0001 warnings turned errors. Think we turn it off for now? At least in this repo? I think if I put in our directory props, it should work now with the other fix. Thoughts @Arlodotexe @niels9001?

Yeah.. let's get this in for UWP/WinUI and fix any Uno related thing later (if we can)?

@michael-hawker michael-hawker marked this pull request as ready for review April 3, 2023 22:44
@michael-hawker
Copy link
Member Author

Ok, yay! CI passes*... This has the dependencies turned off for the extension code in the tests (or ported via temporary internal helpers).

Next phase is to merge this (if no objections), then we can get a package and I can rebuild the tooling to use it with the new shared namespace and devops feed along with a flag for source usage.

i.e. have a prop looked for like ToolkitExtensionSourcePath in the test props files. If it's not empty, then it uses a ProjectRefrence to that path to include the source extensions. Otherwise, it uses the PackageReference as normal to the new package (hopefully building soon)... That way in this main Toolkit repo in the Directory.props we just set that value to this component folder for the extensions themselves.

@niels9001 niels9001 self-requested a review April 4, 2023 10:02
Copy link
Collaborator

@niels9001 niels9001 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested, sample works and docs looking good :)!

@michael-hawker michael-hawker added this pull request to the merge queue Apr 4, 2023
Merged via the queue into main with commit 259f41e Apr 4, 2023
2 of 4 checks passed
@delete-merged-branch delete-merged-branch bot deleted the port/extensions branch April 4, 2023 10:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants