commit 5ddc8a0feb09c8f1e10b19dd9af13268d4a80f3a Author: 12345qiupeng Date: Wed Jun 12 17:55:20 2024 +0800 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f400df3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +bin/ +obj/ +/packages/ +riderModule.iml +/_ReSharper.Caches/ +.idea/ \ No newline at end of file diff --git a/AutolaborVisualizeTool.sln b/AutolaborVisualizeTool.sln new file mode 100644 index 0000000..c2c9bb0 --- /dev/null +++ b/AutolaborVisualizeTool.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutolaborVisualizeTool", "AutolaborVisualizeTool\AutolaborVisualizeTool.csproj", "{3AD18088-AD5C-4FCA-BF6C-CCA3690383DE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3AD18088-AD5C-4FCA-BF6C-CCA3690383DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3AD18088-AD5C-4FCA-BF6C-CCA3690383DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3AD18088-AD5C-4FCA-BF6C-CCA3690383DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3AD18088-AD5C-4FCA-BF6C-CCA3690383DE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/AutolaborVisualizeTool/App.axaml b/AutolaborVisualizeTool/App.axaml new file mode 100644 index 0000000..f10e57e --- /dev/null +++ b/AutolaborVisualizeTool/App.axaml @@ -0,0 +1,15 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/AutolaborVisualizeTool/App.axaml.cs b/AutolaborVisualizeTool/App.axaml.cs new file mode 100644 index 0000000..55617bc --- /dev/null +++ b/AutolaborVisualizeTool/App.axaml.cs @@ -0,0 +1,28 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; +using AutolaborVisualizeTool.ViewModels; +using AutolaborVisualizeTool.Views; + +namespace AutolaborVisualizeTool; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow + { + DataContext = new MainWindowViewModel(), + }; + } + + base.OnFrameworkInitializationCompleted(); + } +} \ No newline at end of file diff --git a/AutolaborVisualizeTool/Assets/avalonia-logo.ico b/AutolaborVisualizeTool/Assets/avalonia-logo.ico new file mode 100644 index 0000000..da8d49f Binary files /dev/null and b/AutolaborVisualizeTool/Assets/avalonia-logo.ico differ diff --git a/AutolaborVisualizeTool/AutolaborVisualizeTool.csproj b/AutolaborVisualizeTool/AutolaborVisualizeTool.csproj new file mode 100644 index 0000000..39b2555 --- /dev/null +++ b/AutolaborVisualizeTool/AutolaborVisualizeTool.csproj @@ -0,0 +1,25 @@ + + + WinExe + net6.0 + enable + true + app.manifest + true + + + + + + + + + + + + + + + + + diff --git a/AutolaborVisualizeTool/Program.cs b/AutolaborVisualizeTool/Program.cs new file mode 100644 index 0000000..e58aa46 --- /dev/null +++ b/AutolaborVisualizeTool/Program.cs @@ -0,0 +1,23 @@ +using Avalonia; +using Avalonia.ReactiveUI; +using System; + +namespace AutolaborVisualizeTool; + +sealed class Program +{ + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace() + .UseReactiveUI(); +} \ No newline at end of file diff --git a/AutolaborVisualizeTool/ViewLocator.cs b/AutolaborVisualizeTool/ViewLocator.cs new file mode 100644 index 0000000..2f5930d --- /dev/null +++ b/AutolaborVisualizeTool/ViewLocator.cs @@ -0,0 +1,32 @@ +using System; +using Avalonia.Controls; +using Avalonia.Controls.Templates; +using AutolaborVisualizeTool.ViewModels; + +namespace AutolaborVisualizeTool; + +public class ViewLocator : IDataTemplate +{ + public Control? Build(object? data) + { + if (data is null) + return null; + + var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal); + var type = Type.GetType(name); + + if (type != null) + { + var control = (Control) Activator.CreateInstance(type)!; + control.DataContext = data; + return control; + } + + return new TextBlock {Text = "Not Found: " + name}; + } + + public bool Match(object? data) + { + return data is ViewModelBase; + } +} \ No newline at end of file diff --git a/AutolaborVisualizeTool/ViewModels/MainWindowViewModel.cs b/AutolaborVisualizeTool/ViewModels/MainWindowViewModel.cs new file mode 100644 index 0000000..0f28a65 --- /dev/null +++ b/AutolaborVisualizeTool/ViewModels/MainWindowViewModel.cs @@ -0,0 +1,8 @@ +namespace AutolaborVisualizeTool.ViewModels; + +public class MainWindowViewModel : ViewModelBase +{ +#pragma warning disable CA1822 // Mark members as static + public string Greeting => "Welcome to Avalonia!"; +#pragma warning restore CA1822 // Mark members as static +} \ No newline at end of file diff --git a/AutolaborVisualizeTool/ViewModels/ViewModelBase.cs b/AutolaborVisualizeTool/ViewModels/ViewModelBase.cs new file mode 100644 index 0000000..7ecf848 --- /dev/null +++ b/AutolaborVisualizeTool/ViewModels/ViewModelBase.cs @@ -0,0 +1,7 @@ +using ReactiveUI; + +namespace AutolaborVisualizeTool.ViewModels; + +public class ViewModelBase : ReactiveObject +{ +} \ No newline at end of file diff --git a/AutolaborVisualizeTool/Views/MainWindow.axaml b/AutolaborVisualizeTool/Views/MainWindow.axaml new file mode 100644 index 0000000..2370efe --- /dev/null +++ b/AutolaborVisualizeTool/Views/MainWindow.axaml @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/AutolaborVisualizeTool/Views/MainWindow.axaml.cs b/AutolaborVisualizeTool/Views/MainWindow.axaml.cs new file mode 100644 index 0000000..de79a7d --- /dev/null +++ b/AutolaborVisualizeTool/Views/MainWindow.axaml.cs @@ -0,0 +1,11 @@ +using Avalonia.Controls; + +namespace AutolaborVisualizeTool.Views; + +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/AutolaborVisualizeTool/app.manifest b/AutolaborVisualizeTool/app.manifest new file mode 100644 index 0000000..92db6db --- /dev/null +++ b/AutolaborVisualizeTool/app.manifest @@ -0,0 +1,18 @@ + + + + + + + + + + + + + +