diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/CustomControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/CustomControls.txt deleted file mode 100644 index f44bef9f6b..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/CustomControls.txt +++ /dev/null @@ -1,30 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost { get; set; } - internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost { get; set; } - internal global::Controls.CustomTextBox UserNameTextBox { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - ClrNamespaceRoutedViewHost = this.FindControl("ClrNamespaceRoutedViewHost"); - UriRoutedViewHost = this.FindControl("UriRoutedViewHost"); - UserNameTextBox = this.FindControl("UserNameTextBox"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/DataTemplates.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/DataTemplates.txt deleted file mode 100644 index 3355e8f6d7..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/DataTemplates.txt +++ /dev/null @@ -1,28 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.ListBox NamedListBox { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - UserNameTextBox = this.FindControl("UserNameTextBox"); - NamedListBox = this.FindControl("NamedListBox"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/DevToolsCode.cs b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/DevToolsCode.cs deleted file mode 100644 index 9b8e6959c1..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/DevToolsCode.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.IO; -using System.Linq; -using System.Threading.Tasks; - -namespace Avalonia.NameGenerator.Tests.InitializeComponent.GeneratedDevTools -{ - public static class DevToolsCode - { - public const string NamedControl = "NamedControl.txt"; - public const string NamedControls = "NamedControls.txt"; - public const string XNamedControl = "xNamedControl.txt"; - public const string XNamedControls = "xNamedControls.txt"; - public const string NoNamedControls = "NoNamedControls.txt"; - public const string CustomControls = "CustomControls.txt"; - public const string DataTemplates = "DataTemplates.txt"; - public const string SignUpView = "SignUpView.txt"; - public const string AttachedProps = "AttachedProps.txt"; - public const string FieldModifier = "FieldModifier.txt"; - - public static async Task Load(string generatedCodeResourceName) - { - var assembly = typeof(XamlXNameResolverTests).Assembly; - var fullResourceName = assembly - .GetManifestResourceNames() - .First(name => name.Contains("InitializeComponent") && - name.Contains("GeneratedDevTools") && - name.EndsWith(generatedCodeResourceName)); - - await using var stream = assembly.GetManifestResourceStream(fullResourceName); - using var reader = new StreamReader(stream!); - return await reader.ReadToEndAsync(); - } - } -} \ No newline at end of file diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/FieldModifier.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/FieldModifier.txt deleted file mode 100644 index 239a556fd8..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/FieldModifier.txt +++ /dev/null @@ -1,36 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - public global::Avalonia.Controls.TextBox FirstNameTextBox { get; set; } - public global::Avalonia.Controls.TextBox LastNameTextBox { get; set; } - protected global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } - internal global::Avalonia.Controls.Button RegisterButton { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - FirstNameTextBox = this.FindControl("FirstNameTextBox"); - LastNameTextBox = this.FindControl("LastNameTextBox"); - PasswordTextBox = this.FindControl("PasswordTextBox"); - ConfirmPasswordTextBox = this.FindControl("ConfirmPasswordTextBox"); - SignUpButton = this.FindControl("SignUpButton"); - RegisterButton = this.FindControl("RegisterButton"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NamedControl.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NamedControl.txt deleted file mode 100644 index bcfcd11625..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NamedControl.txt +++ /dev/null @@ -1,26 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - UserNameTextBox = this.FindControl("UserNameTextBox"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NamedControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NamedControls.txt deleted file mode 100644 index a731f1d04a..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NamedControls.txt +++ /dev/null @@ -1,30 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - UserNameTextBox = this.FindControl("UserNameTextBox"); - PasswordTextBox = this.FindControl("PasswordTextBox"); - SignUpButton = this.FindControl("SignUpButton"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NoNamedControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NoNamedControls.txt deleted file mode 100644 index ef0349d2b0..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/NoNamedControls.txt +++ /dev/null @@ -1,26 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/SignUpView.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/SignUpView.txt deleted file mode 100644 index 23bc5e8c2a..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/SignUpView.txt +++ /dev/null @@ -1,42 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - internal global::Controls.CustomTextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.TextBlock UserNameValidation { get; set; } - internal global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - internal global::Avalonia.Controls.TextBlock PasswordValidation { get; set; } - internal global::Avalonia.Controls.ListBox AwesomeListView { get; set; } - internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox { get; set; } - internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } - internal global::Avalonia.Controls.TextBlock CompoundValidation { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - UserNameTextBox = this.FindControl("UserNameTextBox"); - UserNameValidation = this.FindControl("UserNameValidation"); - PasswordTextBox = this.FindControl("PasswordTextBox"); - PasswordValidation = this.FindControl("PasswordValidation"); - AwesomeListView = this.FindControl("AwesomeListView"); - ConfirmPasswordTextBox = this.FindControl("ConfirmPasswordTextBox"); - ConfirmPasswordValidation = this.FindControl("ConfirmPasswordValidation"); - SignUpButton = this.FindControl("SignUpButton"); - CompoundValidation = this.FindControl("CompoundValidation"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/xNamedControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/xNamedControls.txt deleted file mode 100644 index a731f1d04a..0000000000 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/xNamedControls.txt +++ /dev/null @@ -1,30 +0,0 @@ -// - -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Sample.App -{ - partial class SampleView - { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } - - public void InitializeComponent(bool loadXaml = true) - { - if (loadXaml) - { - AvaloniaXamlLoader.Load(this); - } - -#if DEBUG - this.AttachDevTools(); -#endif - - UserNameTextBox = this.FindControl("UserNameTextBox"); - PasswordTextBox = this.FindControl("PasswordTextBox"); - SignUpButton = this.FindControl("SignUpButton"); - } - } -} diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt index 5d1da033c2..22d2f9bb5b 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt @@ -7,7 +7,7 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/xNamedControl.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt similarity index 68% rename from src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/xNamedControl.txt rename to src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt index bcfcd11625..dd2b749e4b 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/xNamedControl.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt @@ -7,9 +7,9 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; - public void InitializeComponent(bool loadXaml = true) + public void InitializeComponent(bool loadXaml = true, bool attachDevTools = true) { if (loadXaml) { @@ -17,7 +17,10 @@ namespace Sample.App } #if DEBUG - this.AttachDevTools(); + if (attachDevTools) + { + this.AttachDevTools(); + } #endif UserNameTextBox = this.FindControl("UserNameTextBox"); diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/AttachedProps.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt similarity index 87% rename from src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/AttachedProps.txt rename to src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt index bcfcd11625..22d2f9bb5b 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedDevTools/AttachedProps.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt @@ -7,7 +7,7 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; public void InitializeComponent(bool loadXaml = true) { @@ -16,10 +16,6 @@ namespace Sample.App AvaloniaXamlLoader.Load(this); } -#if DEBUG - this.AttachDevTools(); -#endif - UserNameTextBox = this.FindControl("UserNameTextBox"); } } diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt index 39f6c4b0d9..924a13b109 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt @@ -7,9 +7,9 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost { get; set; } - internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost { get; set; } - internal global::Controls.CustomTextBox UserNameTextBox { get; set; } + internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost; + internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost; + internal global::Controls.CustomTextBox UserNameTextBox; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt index d47b1fede3..795cce5485 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt @@ -7,8 +7,8 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.ListBox NamedListBox { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; + internal global::Avalonia.Controls.ListBox NamedListBox; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt index 43fa735f36..4239b6f47e 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt @@ -7,12 +7,12 @@ namespace Sample.App { partial class SampleView { - public global::Avalonia.Controls.TextBox FirstNameTextBox { get; set; } - public global::Avalonia.Controls.TextBox LastNameTextBox { get; set; } - protected global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } - internal global::Avalonia.Controls.Button RegisterButton { get; set; } + public global::Avalonia.Controls.TextBox FirstNameTextBox; + public global::Avalonia.Controls.TextBox LastNameTextBox; + protected global::Avalonia.Controls.TextBox PasswordTextBox; + private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox; + internal global::Avalonia.Controls.Button SignUpButton; + internal global::Avalonia.Controls.Button RegisterButton; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/InitializeComponentCode.cs b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/InitializeComponentCode.cs index caefd5e1e7..59ee051c9b 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/InitializeComponentCode.cs +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/InitializeComponentCode.cs @@ -14,9 +14,11 @@ namespace Avalonia.NameGenerator.Tests.InitializeComponent.GeneratedInitializeCo public const string CustomControls = "CustomControls.txt"; public const string DataTemplates = "DataTemplates.txt"; public const string SignUpView = "SignUpView.txt"; - public const string AttachedProps = "AttachedProps.txt"; public const string FieldModifier = "FieldModifier.txt"; - + public const string AttachedProps = "AttachedProps.txt"; + public const string AttachedPropsWithDevTools = "AttachedPropsWithDevTools.txt"; + public const string ControlWithoutWindow = "ControlWithoutWindow.txt"; + public static async Task Load(string generatedCodeResourceName) { var assembly = typeof(XamlXNameResolverTests).Assembly; diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt index 5d1da033c2..22d2f9bb5b 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt @@ -7,7 +7,7 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt index 0993a82e2f..172f948eea 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt @@ -7,9 +7,9 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; + internal global::Avalonia.Controls.TextBox PasswordTextBox; + internal global::Avalonia.Controls.Button SignUpButton; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt index b04353dfa4..95d6a4feb7 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt @@ -7,15 +7,15 @@ namespace Sample.App { partial class SampleView { - internal global::Controls.CustomTextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.TextBlock UserNameValidation { get; set; } - internal global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - internal global::Avalonia.Controls.TextBlock PasswordValidation { get; set; } - internal global::Avalonia.Controls.ListBox AwesomeListView { get; set; } - internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox { get; set; } - internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } - internal global::Avalonia.Controls.TextBlock CompoundValidation { get; set; } + internal global::Controls.CustomTextBox UserNameTextBox; + internal global::Avalonia.Controls.TextBlock UserNameValidation; + internal global::Avalonia.Controls.TextBox PasswordTextBox; + internal global::Avalonia.Controls.TextBlock PasswordValidation; + internal global::Avalonia.Controls.ListBox AwesomeListView; + internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox; + internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation; + internal global::Avalonia.Controls.Button SignUpButton; + internal global::Avalonia.Controls.TextBlock CompoundValidation; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt index 5d1da033c2..22d2f9bb5b 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt @@ -7,7 +7,7 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt index 0993a82e2f..172f948eea 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt @@ -7,9 +7,9 @@ namespace Sample.App { partial class SampleView { - internal global::Avalonia.Controls.TextBox UserNameTextBox { get; set; } - internal global::Avalonia.Controls.TextBox PasswordTextBox { get; set; } - internal global::Avalonia.Controls.Button SignUpButton { get; set; } + internal global::Avalonia.Controls.TextBox UserNameTextBox; + internal global::Avalonia.Controls.TextBox PasswordTextBox; + internal global::Avalonia.Controls.Button SignUpButton; public void InitializeComponent(bool loadXaml = true) { diff --git a/src/Avalonia.NameGenerator.Tests/InitializeComponent/InitializeComponentTests.cs b/src/Avalonia.NameGenerator.Tests/InitializeComponent/InitializeComponentTests.cs index 6604629d32..d5e33431d0 100644 --- a/src/Avalonia.NameGenerator.Tests/InitializeComponent/InitializeComponentTests.cs +++ b/src/Avalonia.NameGenerator.Tests/InitializeComponent/InitializeComponentTests.cs @@ -1,7 +1,6 @@ using System.Threading.Tasks; using Avalonia.NameGenerator.Compiler; using Avalonia.NameGenerator.Generator; -using Avalonia.NameGenerator.Tests.InitializeComponent.GeneratedDevTools; using Avalonia.NameGenerator.Tests.InitializeComponent.GeneratedInitializeComponent; using Avalonia.NameGenerator.Tests.OnlyProperties.GeneratedCode; using Avalonia.NameGenerator.Tests.Views; @@ -21,18 +20,11 @@ namespace Avalonia.NameGenerator.Tests.InitializeComponent [InlineData(InitializeComponentCode.CustomControls, View.CustomControls, false)] [InlineData(InitializeComponentCode.DataTemplates, View.DataTemplates, false)] [InlineData(InitializeComponentCode.SignUpView, View.SignUpView, false)] - [InlineData(InitializeComponentCode.AttachedProps, View.AttachedProps, false)] [InlineData(InitializeComponentCode.FieldModifier, View.FieldModifier, false)] - [InlineData(DevToolsCode.NamedControl, View.NamedControl, true)] - [InlineData(DevToolsCode.NamedControls, View.NamedControls, true)] - [InlineData(DevToolsCode.XNamedControl, View.XNamedControl, true)] - [InlineData(DevToolsCode.XNamedControls, View.XNamedControls, true)] - [InlineData(DevToolsCode.NoNamedControls, View.NoNamedControls, true)] - [InlineData(DevToolsCode.CustomControls, View.CustomControls, true)] - [InlineData(DevToolsCode.DataTemplates, View.DataTemplates, true)] - [InlineData(DevToolsCode.SignUpView, View.SignUpView, true)] - [InlineData(DevToolsCode.AttachedProps, View.AttachedProps, true)] - [InlineData(DevToolsCode.FieldModifier, View.FieldModifier, true)] + [InlineData(InitializeComponentCode.AttachedPropsWithDevTools, View.AttachedProps, true)] + [InlineData(InitializeComponentCode.AttachedProps, View.AttachedProps, false)] + [InlineData(InitializeComponentCode.ControlWithoutWindow, View.ControlWithoutWindow, true)] + [InlineData(InitializeComponentCode.ControlWithoutWindow, View.ControlWithoutWindow, false)] public async Task Should_Generate_FindControl_Refs_From_Avalonia_Markup_File( string expectation, string markup, @@ -56,14 +48,14 @@ namespace Avalonia.NameGenerator.Tests.InitializeComponent var names = nameResolver.ResolveNames(classInfo.Xaml); var generator = new InitializeComponentCodeGenerator(types); + var code = generator - .GenerateCode("SampleView", "Sample.App", names) + .GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names) .Replace("\r", string.Empty); - var expected = devToolsMode - ? await DevToolsCode.Load(expectation) - : await InitializeComponentCode.Load(expectation); - + var expected = await InitializeComponentCode.Load(expectation); + + CSharpSyntaxTree.ParseText(code); Assert.Equal(expected.Replace("\r", string.Empty), code); } diff --git a/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt b/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt new file mode 100644 index 0000000000..c4202f080d --- /dev/null +++ b/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt @@ -0,0 +1,11 @@ +// + +using Avalonia.Controls; + +namespace Sample.App +{ + partial class SampleView + { + internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindControl("UserNameTextBox"); + } +} diff --git a/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/OnlyPropertiesCode.cs b/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/OnlyPropertiesCode.cs index 4cba8cdfce..0651c53c3f 100644 --- a/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/OnlyPropertiesCode.cs +++ b/src/Avalonia.NameGenerator.Tests/OnlyProperties/GeneratedCode/OnlyPropertiesCode.cs @@ -17,7 +17,8 @@ namespace Avalonia.NameGenerator.Tests.OnlyProperties.GeneratedCode public const string SignUpView = "SignUpView.txt"; public const string AttachedProps = "AttachedProps.txt"; public const string FieldModifier = "FieldModifier.txt"; - + public const string ControlWithoutWindow = "ControlWithoutWindow.txt"; + public static async Task Load(string generatedCodeResourceName) { var assembly = typeof(XamlXNameResolverTests).Assembly; diff --git a/src/Avalonia.NameGenerator.Tests/OnlyProperties/OnlyPropertiesTests.cs b/src/Avalonia.NameGenerator.Tests/OnlyProperties/OnlyPropertiesTests.cs index 71e201b7fc..4ecacd2ff4 100644 --- a/src/Avalonia.NameGenerator.Tests/OnlyProperties/OnlyPropertiesTests.cs +++ b/src/Avalonia.NameGenerator.Tests/OnlyProperties/OnlyPropertiesTests.cs @@ -21,6 +21,7 @@ namespace Avalonia.NameGenerator.Tests.OnlyProperties [InlineData(OnlyPropertiesCode.SignUpView, View.SignUpView)] [InlineData(OnlyPropertiesCode.AttachedProps, View.AttachedProps)] [InlineData(OnlyPropertiesCode.FieldModifier, View.FieldModifier)] + [InlineData(OnlyPropertiesCode.ControlWithoutWindow, View.ControlWithoutWindow)] public async Task Should_Generate_FindControl_Refs_From_Avalonia_Markup_File(string expectation, string markup) { var compilation = @@ -40,7 +41,7 @@ namespace Avalonia.NameGenerator.Tests.OnlyProperties var generator = new OnlyPropertiesCodeGenerator(); var code = generator - .GenerateCode("SampleView", "Sample.App", names) + .GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names) .Replace("\r", string.Empty); var expected = await OnlyPropertiesCode.Load(expectation); diff --git a/src/Avalonia.NameGenerator.Tests/Views/ControlWithoutWindow.xml b/src/Avalonia.NameGenerator.Tests/Views/ControlWithoutWindow.xml new file mode 100644 index 0000000000..77de06a27e --- /dev/null +++ b/src/Avalonia.NameGenerator.Tests/Views/ControlWithoutWindow.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/src/Avalonia.NameGenerator.Tests/Views/View.cs b/src/Avalonia.NameGenerator.Tests/Views/View.cs index c2e4bd085a..0fca5c71ee 100644 --- a/src/Avalonia.NameGenerator.Tests/Views/View.cs +++ b/src/Avalonia.NameGenerator.Tests/Views/View.cs @@ -21,7 +21,8 @@ namespace Avalonia.NameGenerator.Tests.Views public const string SignUpView = "SignUpView.xml"; public const string AttachedProps = "AttachedProps.xml"; public const string FieldModifier = "FieldModifier.xml"; - + public const string ControlWithoutWindow = "ControlWithoutWindow.xml"; + public static async Task Load(string viewName) { var assembly = typeof(XamlXNameResolverTests).Assembly; diff --git a/src/Avalonia.NameGenerator/Domain/ICodeGenerator.cs b/src/Avalonia.NameGenerator/Domain/ICodeGenerator.cs index 885182fd91..55a53a871e 100644 --- a/src/Avalonia.NameGenerator/Domain/ICodeGenerator.cs +++ b/src/Avalonia.NameGenerator/Domain/ICodeGenerator.cs @@ -1,9 +1,10 @@ using System.Collections.Generic; +using XamlX.TypeSystem; namespace Avalonia.NameGenerator.Domain { internal interface ICodeGenerator { - string GenerateCode(string className, string nameSpace, IEnumerable names); + string GenerateCode(string className, string nameSpace, IXamlType XamlType, IEnumerable names); } } \ No newline at end of file diff --git a/src/Avalonia.NameGenerator/Domain/IViewResolver.cs b/src/Avalonia.NameGenerator/Domain/IViewResolver.cs index 72ad2c35ee..7422f3c84e 100644 --- a/src/Avalonia.NameGenerator/Domain/IViewResolver.cs +++ b/src/Avalonia.NameGenerator/Domain/IViewResolver.cs @@ -1,4 +1,6 @@ +using System; using XamlX.Ast; +using XamlX.TypeSystem; namespace Avalonia.NameGenerator.Domain { @@ -7,5 +9,5 @@ namespace Avalonia.NameGenerator.Domain ResolvedView ResolveView(string xaml); } - internal record ResolvedView(string ClassName, string Namespace, XamlDocument Xaml); + internal record ResolvedView(string ClassName, IXamlType XamlType, string Namespace, XamlDocument Xaml); } \ No newline at end of file diff --git a/src/Avalonia.NameGenerator/Generator/AvaloniaNameGenerator.cs b/src/Avalonia.NameGenerator/Generator/AvaloniaNameGenerator.cs index 1eceaf33f8..c39a983145 100644 --- a/src/Avalonia.NameGenerator/Generator/AvaloniaNameGenerator.cs +++ b/src/Avalonia.NameGenerator/Generator/AvaloniaNameGenerator.cs @@ -43,7 +43,7 @@ namespace Avalonia.NameGenerator.Generator var query = from view in resolveViews let names = _names.ResolveNames(view.Xaml) - let code = _code.GenerateCode(view.ClassName, view.Namespace, names) + let code = _code.GenerateCode(view.ClassName, view.Namespace, view.XamlType, names) let fileName = $"{view.ClassName}.g.cs" select new GeneratedPartialClass(fileName, code); diff --git a/src/Avalonia.NameGenerator/Generator/InitializeComponentCodeGenerator.cs b/src/Avalonia.NameGenerator/Generator/InitializeComponentCodeGenerator.cs index b3ac709119..43ab7d9b7a 100644 --- a/src/Avalonia.NameGenerator/Generator/InitializeComponentCodeGenerator.cs +++ b/src/Avalonia.NameGenerator/Generator/InitializeComponentCodeGenerator.cs @@ -6,29 +6,33 @@ namespace Avalonia.NameGenerator.Generator { internal class InitializeComponentCodeGenerator: ICodeGenerator { - private readonly bool _attachDevTools; + private readonly bool _diagnosticsAreConnected; private const string AttachDevToolsCodeBlock = @" #if DEBUG - this.AttachDevTools(); + if (attachDevTools) + { + this.AttachDevTools(); + } #endif "; public InitializeComponentCodeGenerator(IXamlTypeSystem types) { - _attachDevTools = types.FindAssembly("Avalonia.Diagnostics") != null; + _diagnosticsAreConnected = types.FindAssembly("Avalonia.Diagnostics") != null; } - public string GenerateCode(string className, string nameSpace, IEnumerable names) + public string GenerateCode(string className, string nameSpace, IXamlType XamlType, IEnumerable names) { var properties = new List(); var initializations = new List(); foreach (var (typeName, name, fieldModifier) in names) { - properties.Add($" {fieldModifier} global::{typeName} {name} {{ get; set; }}"); + properties.Add($" {fieldModifier} global::{typeName} {name};"); initializations.Add($" {name} = this.FindControl(\"{name}\");"); } - var devToolsBlock = _attachDevTools ? AttachDevToolsCodeBlock : string.Empty; + var attachDevTools = _diagnosticsAreConnected && IsWindow(XamlType); + return $@"// using Avalonia.Controls; @@ -40,18 +44,31 @@ namespace {nameSpace} {{ {string.Join("\n", properties)} - public void InitializeComponent(bool loadXaml = true) + public void InitializeComponent(bool loadXaml = true{(attachDevTools ? ", bool attachDevTools = true" : string.Empty)}) {{ if (loadXaml) {{ AvaloniaXamlLoader.Load(this); }} -{devToolsBlock} +{(attachDevTools ? AttachDevToolsCodeBlock : string.Empty)} {string.Join("\n", initializations)} }} }} }} "; } + + private bool IsWindow(IXamlType XamlType) + { + var type = XamlType; + bool isWindow; + do + { + isWindow = type.FullName == "Avalonia.Controls.Window"; + type = type.BaseType; + } while (!isWindow && type != null); + + return isWindow; + } } } \ No newline at end of file diff --git a/src/Avalonia.NameGenerator/Generator/OnlyPropertiesCodeGenerator.cs b/src/Avalonia.NameGenerator/Generator/OnlyPropertiesCodeGenerator.cs index b3d4b0064d..77f22718f9 100644 --- a/src/Avalonia.NameGenerator/Generator/OnlyPropertiesCodeGenerator.cs +++ b/src/Avalonia.NameGenerator/Generator/OnlyPropertiesCodeGenerator.cs @@ -1,12 +1,13 @@ using System.Collections.Generic; using System.Linq; using Avalonia.NameGenerator.Domain; +using XamlX.TypeSystem; namespace Avalonia.NameGenerator.Generator { internal class OnlyPropertiesCodeGenerator : ICodeGenerator { - public string GenerateCode(string className, string nameSpace, IEnumerable names) + public string GenerateCode(string className, string nameSpace, IXamlType XamlType, IEnumerable names) { var namedControls = names .Select(info => " " + diff --git a/src/Avalonia.NameGenerator/Generator/XamlXViewResolver.cs b/src/Avalonia.NameGenerator/Generator/XamlXViewResolver.cs index cfb51e10a2..06edaff3c4 100644 --- a/src/Avalonia.NameGenerator/Generator/XamlXViewResolver.cs +++ b/src/Avalonia.NameGenerator/Generator/XamlXViewResolver.cs @@ -79,7 +79,9 @@ namespace Avalonia.NameGenerator.Generator var split = text.Text.Split('.'); var nameSpace = string.Join(".", split.Take(split.Length - 1)); var className = split.Last(); - _resolvedClass = new ResolvedView(className, nameSpace, _xaml); + + + _resolvedClass = new ResolvedView(className, clrType, nameSpace, _xaml); return node; } } diff --git a/src/Avalonia.NameGenerator/GeneratorOptions.cs b/src/Avalonia.NameGenerator/GeneratorOptions.cs index 1a92e103d5..6801ce29a7 100644 --- a/src/Avalonia.NameGenerator/GeneratorOptions.cs +++ b/src/Avalonia.NameGenerator/GeneratorOptions.cs @@ -35,13 +35,15 @@ namespace Avalonia.NameGenerator { get { + var defaultBehavior = Behavior.OnlyProperties; + var propertyValue = _context .GetMSBuildProperty( nameof(BuildProperties.AvaloniaNameGeneratorBehavior), - nameof(Behavior.OnlyProperties)); + defaultBehavior.ToString()); if (!Enum.TryParse(propertyValue, true, out Behavior behavior)) - return Behavior.OnlyProperties; + return defaultBehavior; return behavior; } } @@ -50,13 +52,14 @@ namespace Avalonia.NameGenerator { get { + var defaultFieldModifier = DefaultFieldModifier.Internal; var propertyValue = _context .GetMSBuildProperty( nameof(BuildProperties.AvaloniaNameGeneratorDefaultFieldModifier), - nameof(DefaultFieldModifier.Internal)); + defaultFieldModifier.ToString()); if (!Enum.TryParse(propertyValue, true, out DefaultFieldModifier modifier)) - return DefaultFieldModifier.Internal; + return defaultFieldModifier; return modifier; } }