fix: 修复编译错误、BGA向导预览、算子重复插入及状态栏消息

## Compilation fixes
- Fix XAML namespace reference XplorePlane.Converters → XplorePlane.Helpers (EventLogView, StateDisplayView)
- Add missing using for ISampleTypeRepository / JsonSampleTypeRepository in App.xaml.cs
- Fix ILoggerService.Warn() calls using Exception as first arg instead of message string
- Serialize CncProgram to JSON when passing to MatrixLayout (expects string, not CncProgram object)
- Suppress CS8632 nullable annotation warnings project-wide

## BGA wizard fixes
- Fix preview not showing on step 3: force RefreshBgaPreview() when entering final step
- Add step validation in CanNext() to prevent skipping to preview with invalid inputs
- Notify NextCommand.CanExecuteChanged when inputs change
- Fix RunProgress runtime binding error: set Mode=OneWay for ProgressBar.Value

## Operator toolbox: prevent duplicate insertion
- Add static OperatorTarget property for direct dispatch to active pipeline
- PipelineEditorView registers as toolbox target on load (floating window only)
- CNC page sets initial target; PipelineEditorWindow resets to CNC pipeline on close
- '+' button inserts only to the active pipeline instead of broadcasting to all subscribers

## Pipeline editor status bar messages
- Add StatusBarMessageEvent / StatusBarMessagePayload to CommonEvents.cs
- PipelineEditorViewModel publishes status on all ops (add/remove/reorder/save/execute)
- MainViewModel subscribes and displays on main window bottom status bar
- Auto-clear after timeout (3s info, 5s error)

## docs
- Merge three architecture docs into consolidated XplorePlane-架构与结构说明.md
This commit is contained in:
XplorePlane Developer
2026-07-24 15:59:16 +08:00
parent 1f26d10358
commit 957157ae80
893 changed files with 462232 additions and 462378 deletions
@@ -1,52 +1,52 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows7.0</TargetFramework>
<UseWPF>true</UseWPF>
<Platforms>x64</Platforms>
<PlatformTarget>x64</PlatformTarget>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Prism.Wpf" Version="9.0.537" />
<PackageReference Include="Telerik.UI.for.Wpf.NetCore.Xaml" Version="2024.1.408" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\XP.Common\XP.Common.csproj" />
</ItemGroup>
<ItemGroup>
<!-- 从 ExternalLibraries 目录统一引用原生 DLL(已纳入版本管理,避免 bin 被 .gitignore 忽略导致他人编译失败)
Reference native DLLs from ExternalLibraries (version-controlled, avoids build failure since bin is gitignored) -->
<!-- 确保 xisl.dll 复制到输出目录 | Ensure xisl.dll is copied to output directory -->
<None Include="..\ExternalLibraries\xisl.dll">
<Link>xisl.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<!-- 确保 FpdSys.dll 复制到输出目录(IRay 平板探测器 SDK| Ensure FpdSys.dll is copied to output directory (IRay FPD SDK) -->
<None Include="..\ExternalLibraries\FpdSys.dll">
<Link>FpdSys.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<!-- 预设配置文件复制到输出目录(可选覆盖代码默认值)| Preset config files copied to output (optional override for code defaults) -->
<Content Include="Config\Presets\VarexPresets.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\Presets\IRayPresets.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows7.0</TargetFramework>
<UseWPF>true</UseWPF>
<Platforms>x64</Platforms>
<PlatformTarget>x64</PlatformTarget>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Prism.Wpf" Version="9.0.537" />
<PackageReference Include="Telerik.UI.for.Wpf.NetCore.Xaml" Version="2024.1.408" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\XP.Common\XP.Common.csproj" />
</ItemGroup>
<ItemGroup>
<!-- 从 ExternalLibraries 目录统一引用原生 DLL(已纳入版本管理,避免 bin 被 .gitignore 忽略导致他人编译失败)
Reference native DLLs from ExternalLibraries (version-controlled, avoids build failure since bin is gitignored) -->
<!-- 确保 xisl.dll 复制到输出目录 | Ensure xisl.dll is copied to output directory -->
<None Include="..\ExternalLibraries\xisl.dll">
<Link>xisl.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<!-- 确保 FpdSys.dll 复制到输出目录(IRay 平板探测器 SDK| Ensure FpdSys.dll is copied to output directory (IRay FPD SDK) -->
<None Include="..\ExternalLibraries\FpdSys.dll">
<Link>FpdSys.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<!-- 预设配置文件复制到输出目录(可选覆盖代码默认值)| Preset config files copied to output (optional override for code defaults) -->
<Content Include="Config\Presets\VarexPresets.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\Presets\IRayPresets.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>