Files
XplorePlane Developer 957157ae80 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
2026-07-24 15:59:16 +08:00

11 lines
733 B
JSON

{
"HighQuality": { "BinningIndex": 0, "FrameRate": 1, "AvgFrames": 8, "Pga": 4 },
"MediumQuality": { "BinningIndex": 0, "FrameRate": 10, "AvgFrames": 4, "Pga": 4 },
"RealTime": { "BinningIndex": 1, "FrameRate": 30, "AvgFrames": 1, "Pga": 4 },
"HighSpeed": { "BinningIndex": 2, "FrameRate": 60, "AvgFrames": 1, "Pga": 4 },
"RealTimeFullRes": { "BinningIndex": 0, "FrameRate": 15, "AvgFrames": 1, "Pga": 4 },
"HighDynamicFullRes": { "BinningIndex": 0, "FrameRate": 3, "AvgFrames": 4, "Pga": 6 },
"HighDynamic": { "BinningIndex": 1, "FrameRate": 15, "AvgFrames": 2, "Pga": 6 },
"LowDosage": { "BinningIndex": 0, "FrameRate": 3, "AvgFrames": 1, "Pga": 2 }
}