Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
adospace committed Mar 26, 2024
2 parents f02e792 + c4c9aa8 commit 2b46d12
Show file tree
Hide file tree
Showing 133 changed files with 3,222 additions and 775 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
env:
Solution_Name: ./src/MauiReactor.Build.sln
TemplatePack_Name: ./src/MauiReactor.TemplatePack/MauiReactor.TemplatePack.csproj
Version: 2.0.33
Version: 2.0.34

steps:
- name: Checkout
Expand Down
2 changes: 1 addition & 1 deletion samples/ChartApp/Pages/MainPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ partial class PolarChart { }

class ChartPageState
{
public double[] Values { get; set; } = new double[] { 2, 1, 2, 3, 2, 3, 3 };
public double[] Values { get; set; } = [2, 1, 2, 3, 2, 3, 3];
}


Expand Down
15 changes: 14 additions & 1 deletion samples/MauiReactor.TestApp/MauiProgram.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@ public static MauiApp CreateMauiApp()
app.AddResource("Resources/Styles/DefaultTheme.xaml");
app.SetWindowsSpecificAssetsDirectory("Assets");
app.UseTheme<AppTheme>();
})
#if DEBUG
.EnableMauiReactorHotReload()
//This will enable the FrameRateIndicator widget
//Disable before publishing the app
.EnableFrameRateIndicator()
#endif
#endif
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
Expand All @@ -30,6 +32,17 @@ public static MauiApp CreateMauiApp()

builder.Services.AddSingleton<Services.IncrementService>();


return builder.Build();
}
}

class AppTheme : Theme
{
protected override void OnApply()
{
LabelStyles.Default = _ => _
.FontAttributes(MauiControls.FontAttributes.Italic)
.FontSize(32);
}
}
2 changes: 1 addition & 1 deletion samples/MauiReactor.TestApp/Pages/CounterPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class CounterPage : Component<CounterPageState>
public override VisualNode Render()
=> ContentPage("Counter Sample",
VStack(
Label($"Counter: {State.Counter}"),
Label($"Counter: {State.Counter}").ThemeKey("H1"),

Button("Click To Increment", () =>
SetState(s => s.Counter++))
Expand Down
137 changes: 126 additions & 11 deletions src/MauiReactor.Scaffold/TypeGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,14 +199,29 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("()\n { \n \n }\n\n public ");
this.Write("()\n { \n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Default?.Invoke(this);\n }\n\n public ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n " +
"");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n\n }\n");
this.Write("Styles.Default?.Invoke(this);\n }\n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
} else if (IsGenericType()) {
Expand Down Expand Up @@ -255,14 +270,14 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("()\n { \n \n }\n\n public ");
this.Write("()\n { \n }\n\n public ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n\n }\n");
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n }\n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
} else if (IsTypeSealed()) {
Expand Down Expand Up @@ -304,7 +319,14 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("()\n { \n \n }\n\n public ");
this.Write("()\n { \n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Default?.Invoke(this);\n }\n\n public ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));
Expand All @@ -318,7 +340,14 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("?> componentRefAction)\n : base(componentRefAction)\n {\n\n }\n");
this.Write("?> componentRefAction)\n : base(componentRefAction)\n {\n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Default?.Invoke(this);\n }\n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
} else if (IsTypeNotAbstractWithEmptyConstructor()) {
Expand Down Expand Up @@ -360,14 +389,29 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("()\n { \n \n }\n\n public ");
this.Write("()\n { \n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n\n }\n");
this.Write("Styles.Default?.Invoke(this);\n }\n\n public ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n " +
"");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Default?.Invoke(this);\n }\n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
} else {
Expand Down Expand Up @@ -409,15 +453,29 @@ public virtual string TransformText()

#line default
#line hidden
this.Write("()\n { \n \n }\n\n protected ");
this.Write("()\n { \n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Default?.Invoke(this);\n }\n\n protected ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n\n } " +
" \n");
this.Write("(Action<T?> componentRefAction)\n : base(componentRefAction)\n {\n " +
"");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Default?.Invoke(this);\n } \n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
}
Expand Down Expand Up @@ -845,6 +903,29 @@ public virtual string TransformText()
this.Write("\n\n partial void OnBeginUpdate();\n partial void OnEndUpdate();\n\n partial " +
"void OnBeginAnimate();\n partial void OnEndAnimate();\n\n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
if (!IsGenericType()) {

#line default
#line hidden
this.Write("\n protected override void OnThemeChanged()\n {\n if (ThemeKey != null " +
"&& ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles.Themes.TryGetValue(ThemeKey, out var styleAction))\n {\n s" +
"tyleAction(this);\n }\n\n base.OnThemeChanged();\n }\n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
}

#line default
#line hidden
this.Write("\n\n ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
if (Events.Any()) {

Expand Down Expand Up @@ -2911,6 +2992,40 @@ public virtual string TransformText()
#line default
#line hidden
this.Write("\n}\n\n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
if (!IsGenericType()) {

#line default
#line hidden
this.Write("\npublic static partial class ");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(TypeName()));

#line default
#line hidden
this.Write("Styles\n{\n\n public static Action<");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(InterfaceName()));

#line default
#line hidden
this.Write(">? Default { get; set; }\n\n public static Dictionary<string, Action<");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(InterfaceName()));

#line default
#line hidden
this.Write(">> Themes { get; } = [];\n}\n");

#line 1 "C:\Source\github\reactorui-maui\src\MauiReactor.Scaffold\TypeGenerator.tt"
}

#line default
#line hidden
return this.GenerationEnvironment.ToString();
}
}
Expand Down
39 changes: 29 additions & 10 deletions src/MauiReactor.Scaffold/TypeGenerator.tt
Original file line number Diff line number Diff line change
Expand Up @@ -42,65 +42,63 @@ public abstract partial class <#= TypeName() #><T> : <#= BaseTypeName() #><T, <#
{
public <#= TypeName() #>()
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}

public <#= TypeName() #>(Action<T?> componentRefAction)
: base(componentRefAction)
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}
<# } else if (IsGenericType()) { #>
public abstract partial class <#= TypeName() #><T, TChild> : <#= BaseTypeName() #><T>, <#= InterfaceName() #> where T : <#= FullTypeName() #><TChild>, new() where TChild : <#= GenericArgumentBaseFullTypeName() #>
{
public <#= TypeName() #>()
{

}

public <#= TypeName() #>(Action<T?> componentRefAction)
: base(componentRefAction)
{

}
<# } else if (IsTypeSealed()) { #>
public sealed partial class <#= TypeName() #> : <#= BaseTypeName() #><<#= FullTypeName() #>>, <#= InterfaceName() #>
{
public <#= TypeName() #>()
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}

public <#= TypeName() #>(Action<<#= FullTypeName() #>?> componentRefAction)
: base(componentRefAction)
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}
<# } else if (IsTypeNotAbstractWithEmptyConstructor()) { #>
public partial class <#= TypeName() #><T> : <#= BaseTypeName() #><T>, <#= InterfaceName() #> where T : <#= FullTypeName() #>, new()
{
public <#= TypeName() #>()
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}

public <#= TypeName() #>(Action<T?> componentRefAction)
: base(componentRefAction)
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}
<# } else { #>
public abstract partial class <#= TypeName() #><T> : <#= BaseTypeName() #><T>, <#= InterfaceName() #> where T : <#= FullTypeName() #>, new()
{
protected <#= TypeName() #>()
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}

protected <#= TypeName() #>(Action<T?> componentRefAction)
: base(componentRefAction)
{

<#= TypeName() #>Styles.Default?.Invoke(this);
}
<# } #>

Expand Down Expand Up @@ -186,6 +184,18 @@ public abstract partial class <#= TypeName() #><T> : <#= BaseTypeName() #><T>, <
partial void OnBeginAnimate();
partial void OnEndAnimate();

<# if (!IsGenericType()) { #>
protected override void OnThemeChanged()
{
if (ThemeKey != null && <#= TypeName() #>Styles.Themes.TryGetValue(ThemeKey, out var styleAction))
{
styleAction(this);
}

base.OnThemeChanged();
}
<# } #>

<# if (Events.Any()) { #>

partial void OnAttachingNativeEvents();
Expand Down Expand Up @@ -446,3 +456,12 @@ public static partial class <#= TypeName() #>Extensions
<# } #>
}

<# if (!IsGenericType()) { #>
public static partial class <#= TypeName() #>Styles
{

public static Action<<#= InterfaceName() #>>? Default { get; set; }

public static Dictionary<string, Action<<#= InterfaceName() #>>> Themes { get; } = [];
}
<# } #>
Loading

0 comments on commit 2b46d12

Please sign in to comment.