diff --git a/src/Eto.DevExtension.Shared/ProjectWizardPageModel.cs b/src/Eto.DevExtension.Shared/ProjectWizardPageModel.cs index 3bde147..347f72c 100755 --- a/src/Eto.DevExtension.Shared/ProjectWizardPageModel.cs +++ b/src/Eto.DevExtension.Shared/ProjectWizardPageModel.cs @@ -88,7 +88,6 @@ public string AppName public bool SupportsPCL => Source.TargetFrameworkVersion > new Version(4, 0) && Source.IsSupportedParameter("PCL"); public bool SupportsNetStandard => Source.IsSupportedParameter("NetStandard"); - public bool SupportsNet6 => Source.IsSupportedParameter("Net6"); public bool SupportsSAL => Source.IsSupportedParameter("SAL"); @@ -98,10 +97,10 @@ public string AppName public bool SupportsCombined => Source.IsSupportedParameter("Combined"); - public bool SupportsXamMac => Source.IsSupportedParameter("XamMac"); - public bool SupportsMacosWorkload => Source.IsSupportedParameter("macos"); + public bool SupportsWinForms => Source.IsSupportedParameter("winforms"); + public bool SupportsXeto => Source.IsSupportedParameter("Xeto"); public bool SupportsJeto => Source.IsSupportedParameter("Jeto"); @@ -123,27 +122,26 @@ public bool Combined OnPropertyChanged(); OnPropertyChanged(nameof(Information)); OnPropertyChanged(nameof(AllowMacosWorkload)); - OnPropertyChanged(nameof(AllowXamMac)); } } - public bool IncludeXamMac + public bool IncludeMacosWorkload { - get { return Source.GetParameter("IncludeXamMac").ToBool(); } + get { return Source.GetParameter("IncludeMacOS").ToBool(); } set { - Source.SetParameter("IncludeXamMac", value.ToString()); + Source.SetParameter("IncludeMacOS", value.ToString()); OnPropertyChanged(); OnPropertyChanged(nameof(Information)); } } - public bool IncludeMacosWorkload + public bool IncludeWinForms { - get { return Source.GetParameter("IncludeMacosWorkload").ToBool(); } + get { return Source.GetParameter("IncludeWinForms").ToBool(); } set { - Source.SetParameter("IncludeMacosWorkload", value.ToString()); + Source.SetParameter("IncludeWinForms", value.ToString()); OnPropertyChanged(); OnPropertyChanged(nameof(Information)); } @@ -237,7 +235,6 @@ public class FrameworkInfo public string Description { get; set; } public bool CanUseCombined { get; set; } public bool CanUseMacos { get; set; } - public bool CanUseXamMac { get; set; } } public FrameworkInfo[] SupportedFrameworks => frameworkInformation ?? (frameworkInformation = GetFrameworkInformation().ToArray()); @@ -246,14 +243,15 @@ public class FrameworkInfo IEnumerable GetFrameworkInformation() { - if (SupportsNet6) - yield return new FrameworkInfo { Text = ".NET 6", Value = "net6.0", CanUseCombined = true, CanUseMacos = true }; - - yield return new FrameworkInfo { Text = ".NET 5", Value = "net5.0", CanUseCombined = true }; - yield return new FrameworkInfo { Text = ".NET Core 3.1", Value = "netcoreapp3.1", CanUseCombined = true }; - yield return new FrameworkInfo { Text = ".NET Framework 4.8", Value = "net48", CanUseCombined = true, CanUseXamMac = true }; - yield return new FrameworkInfo { Text = ".NET Framework 4.7.2", Value = "net472", CanUseCombined = true, CanUseXamMac = true }; - yield return new FrameworkInfo { Text = ".NET Framework 4.6.2", Value = "net462", CanUseCombined = true, CanUseXamMac = true }; + // matches the Framework choices in Eto.Forms.Templates + yield return new FrameworkInfo { Text = ".NET 10", Value = "net10.0", CanUseCombined = true, CanUseMacos = true }; + yield return new FrameworkInfo { Text = ".NET 9", Value = "net9.0", CanUseCombined = true, CanUseMacos = true }; + yield return new FrameworkInfo { Text = ".NET 8", Value = "net8.0", CanUseCombined = true, CanUseMacos = true }; + yield return new FrameworkInfo { Text = ".NET 7", Value = "net7.0", CanUseCombined = true, CanUseMacos = true }; + yield return new FrameworkInfo { Text = ".NET 6", Value = "net6.0", CanUseCombined = true, CanUseMacos = true }; + yield return new FrameworkInfo { Text = ".NET Framework 4.8", Value = "net48", CanUseCombined = true }; + yield return new FrameworkInfo { Text = ".NET Framework 4.7.2", Value = "net472", CanUseCombined = true }; + yield return new FrameworkInfo { Text = ".NET Framework 4.6.2", Value = "net462", CanUseCombined = true }; } FrameworkInfo _selectedFramework; @@ -265,25 +263,23 @@ public FrameworkInfo SelectedFramework { _selectedFramework = value; + // the macOS project's framework comes from Framework, the rest from TargetFrameworkOverride + Source.SetParameter("Framework", value.Value); Source.SetParameter("TargetFrameworkOverride", value.Value); if (!AllowCombined) Combined = false; if (!AllowMacosWorkload) IncludeMacosWorkload = false; - if (!AllowXamMac) - IncludeXamMac = false; OnPropertyChanged(); OnPropertyChanged(nameof(Information)); OnPropertyChanged(nameof(AllowCombined)); OnPropertyChanged(nameof(AllowMacosWorkload)); - OnPropertyChanged(nameof(AllowXamMac)); } } public bool AllowCombined => _selectedFramework?.CanUseCombined == true; public bool AllowMacosWorkload => _selectedFramework?.CanUseMacos == true; - public bool AllowXamMac => _selectedFramework?.CanUseXamMac == true || !Combined; struct TypeInfo @@ -300,21 +296,24 @@ struct TypeInfo new TypeInfo { UseSAL = true, Text = "Use a shared asset library for shared code and maximum flexibility." } }; - struct CombinedInfo + string CombinedInformation { - public string Text; - public bool Combined; - public bool? IncludeXamMac; - public bool? IncludeMacosWorkload; + get + { + var windows = SupportsWinForms && IncludeWinForms ? "Windows Forms" : "WPF"; + var mac = SupportsMacosWorkload && IncludeMacosWorkload ? ".NET's macos workload" : "Eto's Mac64 platform"; + if (Combined) + return $"A single combined project that can build for Windows, Linux, and Mac.\n\nUses {windows} on Windows and {mac} on Mac."; + + var text = "A separate project for each platform: WPF, Gtk and Mac64"; + if (SupportsWinForms && IncludeWinForms) + text += ", plus Windows Forms"; + if (SupportsMacosWorkload && IncludeMacosWorkload) + text += ", plus .NET's macos workload"; + return text + "."; + } } - static CombinedInfo[] combinedInformation = { - new CombinedInfo { Combined = true, IncludeMacosWorkload = true, Text = "A single combined project that can build for Windows, Linux and Mac.\n\nUses .NET's macos workload on Mac." }, - new CombinedInfo { Combined = true, IncludeXamMac = true, Text = "A single combined project that can build for Windows, Linux and Xamarin.Mac." }, - new CombinedInfo { Combined = true, IncludeMacosWorkload = false, IncludeXamMac = false, Text = "A single combined project that can build for Windows, Linux, and Mac.\n\nUses Eto's Mac64 platform on Mac." }, - new CombinedInfo { Combined = false, Text = "A separate project for each platform." }, - }; - struct FormatInfo { public string Text; @@ -347,14 +346,7 @@ public string Information var text = new List(); if (SupportsCombined) - { - var combinedInfo = from i in combinedInformation - where i.Combined == Combined - && (i.IncludeXamMac == null || i.IncludeXamMac == IncludeXamMac) - && (i.IncludeMacosWorkload == null || i.IncludeMacosWorkload == IncludeMacosWorkload) - select i.Text; - text.Add(combinedInfo.FirstOrDefault()); - } + text.Add(CombinedInformation); if (SupportsProjectType) { diff --git a/src/Eto.DevExtension.Shared/ProjectWizardPageView.cs b/src/Eto.DevExtension.Shared/ProjectWizardPageView.cs index cd8aff7..ea1decd 100755 --- a/src/Eto.DevExtension.Shared/ProjectWizardPageView.cs +++ b/src/Eto.DevExtension.Shared/ProjectWizardPageView.cs @@ -97,15 +97,14 @@ public ProjectWizardPageView(ProjectWizardPageModel model) content.AddRow(HeadingLabel(string.Empty), cb); } - if (model.SupportsXamMac) + if (model.SupportsWinForms) { var cb = new CheckBox { - ToolTip = "This enables you to bundle mono with your app so your users don't have to install it separately. You can only compile this on a Mac" + ToolTip = "Uses Windows Forms on Windows instead of, or as well as, WPF" }; - cb.BindDataContext(c => c.Text, Binding.Property((ProjectWizardPageModel m) => m.Combined).Convert(combined => combined ? "Use Xamarin.Mac" : "Include Xamarin.Mac project")); - cb.BindDataContext(c => c.Enabled, Binding.Property((ProjectWizardPageModel m) => m.AllowXamMac)); - cb.CheckedBinding.BindDataContext((ProjectWizardPageModel m) => m.IncludeXamMac); + cb.BindDataContext(c => c.Text, Binding.Property((ProjectWizardPageModel m) => m.Combined).Convert(combined => combined ? "Use Windows Forms instead of WPF" : "Include Windows Forms project")); + cb.CheckedBinding.BindDataContext((ProjectWizardPageModel m) => m.IncludeWinForms); content.AddRow(HeadingLabel(string.Empty), cb); } diff --git a/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-CSharp/App.vstemplate b/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-CSharp/App.vstemplate index 3d61f5e..b7efb8e 100755 --- a/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-CSharp/App.vstemplate +++ b/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-CSharp/App.vstemplate @@ -31,7 +31,7 @@ - + diff --git a/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-FSharp/App.vstemplate b/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-FSharp/App.vstemplate index b6ad1ac..cd213dd 100755 --- a/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-FSharp/App.vstemplate +++ b/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-FSharp/App.vstemplate @@ -31,7 +31,7 @@ - + diff --git a/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-VisualBasic/App.vstemplate b/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-VisualBasic/App.vstemplate index 141ea1a..11d7668 100755 --- a/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-VisualBasic/App.vstemplate +++ b/src/Eto.DevExtension.VisualStudio.Windows/Templates/App-VisualBasic/App.vstemplate @@ -31,7 +31,7 @@ - + diff --git a/src/Eto.DevExtension.VisualStudio.Windows/Wizards/ProjectWizard.cs b/src/Eto.DevExtension.VisualStudio.Windows/Wizards/ProjectWizard.cs index 4f90d19..776cd34 100755 --- a/src/Eto.DevExtension.VisualStudio.Windows/Wizards/ProjectWizard.cs +++ b/src/Eto.DevExtension.VisualStudio.Windows/Wizards/ProjectWizard.cs @@ -45,8 +45,6 @@ public string GetParameter(string parameter) public bool IsSupportedParameter(string parameter) { - if (string.Equals(parameter, "Net6", StringComparison.OrdinalIgnoreCase)) - return true; return replacements.IsSupportedParameter(parameter); }