Skip to content

Commit

Permalink
feat: add lightweight extension
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc-Antoine-Soucy committed Aug 10, 2023
1 parent 81c2e40 commit b81b736
Show file tree
Hide file tree
Showing 15 changed files with 697 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Settings.XamlStyler
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"KeepFirstAttributeOnSameLine": true,
"MaxAttributeCharactersPerLine": 0,
"MaxAttributesPerLine": 1,
"NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter, StaticResource",
"NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter, StaticResource, SolidColorBrush",
"SeparateByGroups": false,
"AttributeIndentation": 0,
"AttributeIndentationStyle": 0,
Expand Down
38 changes: 38 additions & 0 deletions Uno.Gallery/Uno.Gallery.Shared/Extensions/ResourceExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using Microsoft.UI.Xaml;
using System;

namespace Uno.Gallery
{
/// <summary>
/// Helper class for Resources Extensions.
/// </summary>
public static class ResourceExtensions
{
public static readonly DependencyProperty OverridePathProperty =
DependencyProperty.RegisterAttached(
"OverridePath",
typeof(string),
typeof(ResourceExtensions),
new PropertyMetadata(null, OnOverridePathChanged));

public static void SetOverridePath(FrameworkElement element, string value)
{
element.SetValue(OverridePathProperty, value);
}

public static string GetOverridePath(FrameworkElement element)
{
return (string)element.GetValue(OverridePathProperty);
}

private static void OnOverridePathChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is FrameworkElement fe)
{
fe.Resources = e.NewValue is string path
? new ResourceDictionary() { Source = new Uri(path, UriKind.RelativeOrAbsolute) }
: default;
}
}
}
}
38 changes: 38 additions & 0 deletions Uno.Gallery/Uno.Gallery.Shared/Uno.Gallery.Shared.projitems
Original file line number Diff line number Diff line change
Expand Up @@ -173,19 +173,57 @@
<Compile Include="$(MSBuildThisFileDirectory)Entities\Design.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Entities\SourceSdk.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Extensions\ClipboardExtensions.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Extensions\ResourceExtensions.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Extensions\XamlDisplayExtensions.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\Disposable.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\EnumHelper.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\SystemThemeHelper.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\VisualTreeHelperEx.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModels\Command.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModels\ViewModelBase.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Views\SamplePages\LightWeightExtensionSameplePage.xaml.cs" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="$(MSBuildThisFileDirectory)App.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Fluent\Button.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Fluent\CheckBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Fluent\RadioButton.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Fluent\TextBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Material\Button.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Material\CheckBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Material\RadioButton.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\ControlResourcesOverride\Material\TextBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="$(MSBuildThisFileDirectory)Views\SamplePages\LightWeightExtensionSameplePage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<_Globbled_Page Include="$(MSBuildThisFileDirectory)**/*.xaml" Exclude="@(Page);@(ApplicationDefinition)">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
Expand Down
6 changes: 6 additions & 0 deletions Uno.Gallery/Uno.Gallery.Shared/Uno.Gallery.Shared.shproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,10 @@
<PropertyGroup />
<Import Project="Uno.Gallery.Shared.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
<ItemGroup>
<_Globbed_Compile Remove="Views\SamplePages\LightWeightExtensionSameplePage.xaml.cs" />
</ItemGroup>
<ItemGroup>
<_Globbled_Page Remove="Views\SamplePages\LightWeightExtensionSameplePage.xaml" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="ButtonForeground" Color="DarkGreen" />
<SolidColorBrush x:Key="ButtonBackground" Color="LightGreen" />
<SolidColorBrush x:Key="ButtonBorderBrush" Color="DarkGreen" />

<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="DarkRed" />
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="LightPink" />
<SolidColorBrush x:Key="ButtonBorderBrushPointerOver" Color="DarkRed" />

<SolidColorBrush x:Key="ButtonForegroundPressed" Color="DarkBlue" />
<SolidColorBrush x:Key="ButtonBackgroundPressed" Color="LightSteelBlue" />
<SolidColorBrush x:Key="ButtonBorderBrushPressed" Color="DarkBlue" />

<SolidColorBrush x:Key="ButtonForegroundDisabled" Color="LightSlateGray" />
<SolidColorBrush x:Key="ButtonBackgroundDisabled" Color="DarkGray" />
<SolidColorBrush x:Key="ButtonBorderBrushDisabled" Color="LightSlateGray" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<!-- Checked state -->
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundChecked" Color="Teal" />
<SolidColorBrush x:Key="CheckBoxBorderBrushChecked" Color="Navy" />
<SolidColorBrush x:Key="CheckBoxBackgroundChecked" Color="Maroon" />

<!-- Checked and pointer over state -->
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundCheckedPointerOver" Color="Lime" />
<SolidColorBrush x:Key="CheckBoxBorderBrushCheckedPointerOver" Color="Olive" />
<SolidColorBrush x:Key="CheckBoxBackgroundCheckedPointerOver" Color="Silver" />

<!-- Checked and pressed state -->
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundCheckedPressed" Color="Purple" />
<SolidColorBrush x:Key="CheckBoxBorderBrushCheckedPressed" Color="Aqua" />
<SolidColorBrush x:Key="CheckBoxBackgroundCheckedPressed" Color="Yellow" />

<!-- Unchecked state -->
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundUnchecked" Color="Black" />
<SolidColorBrush x:Key="CheckBoxBorderBrushUnchecked" Color="White" />
<SolidColorBrush x:Key="CheckBoxBackgroundUnchecked" Color="Gray" />

<!-- Unchecked and pointer over state -->
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundUncheckedPointerOver" Color="Blue" />
<SolidColorBrush x:Key="CheckBoxBorderBrushUncheckedPointerOver" Color="Orange" />
<SolidColorBrush x:Key="CheckBoxBackgroundUncheckedPointerOver" Color="Green" />

<!-- Unchecked and pressed state -->
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundUncheckedPressed" Color="Red" />
<SolidColorBrush x:Key="CheckBoxBorderBrushUncheckedPressed" Color="Cyan" />
<SolidColorBrush x:Key="CheckBoxBackgroundUncheckedPressed" Color="Pink" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="RadioButtonForeground" Color="DarkGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStroke" Color="LightGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStroke" Color="DarkGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFill" Color="LightGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFill" Color="DarkGreen" />

<SolidColorBrush x:Key="RadioButtonForegroundPointerOver" Color="DarkRed" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStrokePointerOver" Color="LightPink" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStrokePointerOver" Color="DarkRed" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFillPointerOver" Color="LightPink" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFillPointerOver" Color="DarkRed" />

<SolidColorBrush x:Key="RadioButtonForegroundPressed" Color="DarkBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStrokePressed" Color="LightSteelBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStrokePressed" Color="DarkBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFillPressed" Color="LightSteelBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFillPressed" Color="DarkBlue" />

<SolidColorBrush x:Key="RadioButtonForegroundDisabled" Color="LightSlateGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStrokeDisabled" Color="DarkGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStrokeDisabled" Color="LightSlateGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFillDisabled" Color="DarkGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFillDisabled" Color="LightSlateGray" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<!-- Default State -->
<SolidColorBrush x:Key="TextControlForeground" Color="Red" />
<SolidColorBrush x:Key="TextControlBackground" Color="Cyan" />

<!-- Pointer Over State -->
<SolidColorBrush x:Key="TextControlButtonBackgroundPointerOver" Color="Orange" />
<SolidColorBrush x:Key="TextControlBackgroundPointerOver" Color="Navy" />
<SolidColorBrush x:Key="TextControlForegroundPointerOver" Color="Gray" />

<!-- Focused State -->
<SolidColorBrush x:Key="TextControlForegroundFocused" Color="Yellow" />
<SolidColorBrush x:Key="TextControlBackgroundFocused" Color="RosyBrown" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="FilledButtonForeground" Color="DarkGreen" />
<SolidColorBrush x:Key="FilledButtonBackground" Color="LightGreen" />
<SolidColorBrush x:Key="FilledButtonBorderBrush" Color="DarkGreen" />

<SolidColorBrush x:Key="FilledButtonForegroundPointerOver" Color="DarkRed" />
<SolidColorBrush x:Key="FilledButtonBackgroundPointerOver" Color="LightPink" />
<SolidColorBrush x:Key="FilledButtonBorderBrushPointerOver" Color="DarkRed" />

<SolidColorBrush x:Key="FilledButtonForegroundPressed" Color="DarkBlue" />
<SolidColorBrush x:Key="FilledButtonBackgroundPressed" Color="LightSteelBlue" />
<SolidColorBrush x:Key="FilledButtonBorderBrushPressed" Color="DarkBlue" />

<SolidColorBrush x:Key="FilledButtonForegroundFocused" Color="AntiqueWhite" />
<SolidColorBrush x:Key="FilledButtonBackgroundFocused" Color="DarkMagenta" />
<SolidColorBrush x:Key="FilledButtonBorderBrushFocused" Color="AntiqueWhite" />

<SolidColorBrush x:Key="FilledButtonForegroundDisabled" Color="LightSlateGray" />
<SolidColorBrush x:Key="FilledButtonBackgroundDisabled" Color="DarkGray" />
<SolidColorBrush x:Key="FilledButtonBorderBrushDisabled" Color="LightSlateGray" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<!-- Checked state -->
<SolidColorBrush x:Key="CheckBoxGlyphForegroundChecked" Color="Red" />
<SolidColorBrush x:Key="CheckBoxBorderBrushChecked" Color="Green" />
<SolidColorBrush x:Key="CheckBoxBackgroundChecked" Color="White" />

<!-- Checked and pointer over state -->
<SolidColorBrush x:Key="CheckBoxGlyphForegroundCheckedPointerOver" Color="Blue" />
<SolidColorBrush x:Key="CheckBoxBorderBrushCheckedPointerOver" Color="Yellow" />
<SolidColorBrush x:Key="CheckBoxBackgroundCheckedPointerOver" Color="Black" />

<!-- Checked and pressed state -->
<SolidColorBrush x:Key="CheckBoxGlyphForegroundPressed" Color="Purple" />
<SolidColorBrush x:Key="CheckBoxBorderBrushCheckedPressed" Color="Silver" />
<SolidColorBrush x:Key="CheckBoxBackgroundCheckedPressed" Color="Cyan" />

<!-- Unchecked state -->
<StaticResource x:Key="CheckBoxBorderBrushUnchecked" ResourceKey="SecondaryBrush" />
<StaticResource x:Key="CheckBoxBackgroundUnchecked" ResourceKey="PrimaryLowBrush" />

<!-- Unchecked and pressed state -->
<SolidColorBrush x:Key="CheckBoxBorderBrushUncheckedPressed" Color="Lime" />
<SolidColorBrush x:Key="CheckBoxBackgroundUncheckedPressed" Color="Navy" />

<!-- Unchecked and pointer over state -->
<SolidColorBrush x:Key="CheckBoxBorderBrushUncheckedPointerOver" Color="Maroon" />
<SolidColorBrush x:Key="CheckBoxBackgroundUncheckedPointerOver" Color="Olive" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="RadioButtonForeground" Color="DarkGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStroke" Color="LightGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStroke" Color="DarkGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFill" Color="LightGreen" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFill" Color="DarkGreen" />

<SolidColorBrush x:Key="RadioButtonForegroundPointerOver" Color="DarkRed" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStrokePointerOver" Color="LightPink" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStrokePointerOver" Color="DarkRed" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFillPointerOver" Color="LightPink" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFillPointerOver" Color="DarkRed" />

<SolidColorBrush x:Key="RadioButtonForegroundPressed" Color="DarkBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStrokePressed" Color="LightSteelBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStrokePressed" Color="DarkBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFillPressed" Color="LightSteelBlue" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFillPressed" Color="DarkBlue" />

<SolidColorBrush x:Key="RadioButtonForegroundDisabled" Color="LightSlateGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseStrokeDisabled" Color="DarkGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedStrokeDisabled" Color="LightSlateGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseFillDisabled" Color="DarkGray" />
<SolidColorBrush x:Key="RadioButtonOuterEllipseCheckedFillDisabled" Color="LightSlateGray" />
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<!-- Normal State -->
<SolidColorBrush x:Key="OutlinedTextBoxBorderBrush" Color="Red" />
<SolidColorBrush x:Key="OutlinedTextBoxPlaceholderForeground" Color="Green" />
<SolidColorBrush x:Key="OutlinedTextBoxForeground" Color="Orange" />

<!-- Focused state -->
<SolidColorBrush x:Key="OutlinedTextBoxBorderBrushFocused" Color="Lime" />
<SolidColorBrush x:Key="OutlinedTextBoxPlaceholderForegroundFocused" Color="Navy" />
<SolidColorBrush x:Key="OutlinedTextBoxForegroundFocused" Color="Pink" />

<!-- Pointer over state -->
<StaticResource x:Key="OutlinedTextBoxPlaceholderForegroundPointerOver" ResourceKey="SecondaryLowBrush" />
<StaticResource x:Key="OutlinedTextBoxBorderBrushPointerOver" ResourceKey="SecondaryLowBrush" />
<StaticResource x:Key="OutlinedTextBoxForegroundPointerOver" ResourceKey="PrimaryBrush" />
</ResourceDictionary>
Loading

0 comments on commit b81b736

Please sign in to comment.