diff --git a/XplorePlane/ViewModels/ImageProcessing/PipelineEditorViewModel.cs b/XplorePlane/ViewModels/ImageProcessing/PipelineEditorViewModel.cs
index 517e231..129c0fe 100644
--- a/XplorePlane/ViewModels/ImageProcessing/PipelineEditorViewModel.cs
+++ b/XplorePlane/ViewModels/ImageProcessing/PipelineEditorViewModel.cs
@@ -205,7 +205,7 @@ namespace XplorePlane.ViewModels
if (string.IsNullOrWhiteSpace(operatorKey))
{
- StatusMessage = "算子键不能为空";
+ SetInfoStatus("算子键不能为空");
_logger.Warn("AddOperator 失败:operatorKey 为空");
return;
}
@@ -216,14 +216,14 @@ namespace XplorePlane.ViewModels
if (!available.Contains(operatorKey))
{
- StatusMessage = $"算子 '{operatorKey}' 未注册";
+ SetInfoStatus($"算子 '{operatorKey}' 未注册");
_logger.Warn("AddOperator 失败:算子 {Key} 未注册", operatorKey);
return;
}
if (PipelineNodes.Count >= MaxPipelineLength)
{
- StatusMessage = $"流水线节点数已达上限({MaxPipelineLength})";
+ SetInfoStatus($"流水线节点数已达上限({MaxPipelineLength})");
_logger.Warn("AddOperator 失败:节点数已达上限 {Max}", MaxPipelineLength);
return;
}
@@ -239,7 +239,7 @@ namespace XplorePlane.ViewModels
SelectedNode = node;
_logger.Info("节点已添加到 PipelineNodes:{Key} ({DisplayName}),当前节点数={Count}",
operatorKey, displayName, PipelineNodes.Count);
- StatusMessage = $"已添加算子:{displayName}";
+ SetInfoStatus($"已添加算子:{displayName}");
TriggerDebouncedExecution();
}
@@ -252,7 +252,7 @@ namespace XplorePlane.ViewModels
RenumberNodes();
SelectNeighborAfterRemoval(removedIndex);
- StatusMessage = $"已移除算子:{node.DisplayName}";
+ SetInfoStatus($"已移除算子:{node.DisplayName}");
TriggerDebouncedExecution();
}
@@ -291,7 +291,7 @@ namespace XplorePlane.ViewModels
PipelineNodes.Insert(newIndex, node);
RenumberNodes();
SelectedNode = node;
- StatusMessage = $"已调整算子顺序:{node.DisplayName}";
+ SetInfoStatus($"已调整算子顺序:{node.DisplayName}");
TriggerDebouncedExecution();
}
@@ -301,9 +301,9 @@ namespace XplorePlane.ViewModels
node.IsEnabled = !node.IsEnabled;
SelectedNode = node;
- StatusMessage = node.IsEnabled
+ SetInfoStatus(node.IsEnabled
? $"已启用算子:{node.DisplayName}"
- : $"已停用算子:{node.DisplayName}";
+ : $"已停用算子:{node.DisplayName}");
TriggerDebouncedExecution();
}
@@ -446,7 +446,7 @@ namespace XplorePlane.ViewModels
}
catch (Exception ex)
{
- StatusMessage = $"加载图像失败:{ex.Message}";
+ SetErrorStatus($"加载图像失败:{ex.Message}");
_logger.Error(ex, "加载图像失败:{Path}", dialog.FileName);
}
}
@@ -465,7 +465,7 @@ namespace XplorePlane.ViewModels
SourceImage = bitmap;
PreviewImage = bitmap;
- StatusMessage = $"已加载图像:{Path.GetFileName(filePath)}";
+ SetInfoStatus($"已加载图像:{Path.GetFileName(filePath)}");
PublishManualImageLoaded(bitmap, filePath);
}
@@ -476,7 +476,7 @@ namespace XplorePlane.ViewModels
SourceImage = bitmap;
PreviewImage = bitmap;
- StatusMessage = $"已加载图像:{Path.GetFileName(filePath)}";
+ SetInfoStatus($"已加载图像:{Path.GetFileName(filePath)}");
PublishManualImageLoaded(bitmap, filePath);
if (runPipeline)
@@ -504,7 +504,7 @@ namespace XplorePlane.ViewModels
SourceImage = payload.Image;
PreviewImage = payload.Image;
- StatusMessage = $"已加载图像:{payload.FileName}";
+ SetInfoStatus($"已加载图像:{payload.FileName}");
}
private void CancelExecution()
@@ -535,14 +535,14 @@ namespace XplorePlane.ViewModels
PreviewImage = null;
_currentFilePath = null;
PipelineFileDisplayName = DefaultPipelineFileDisplayName;
- StatusMessage = "已新建流水线";
+ SetInfoStatus("已新建流水线");
}
private async Task SavePipelineAsync()
{
if (string.IsNullOrWhiteSpace(PipelineName) || PipelineName.Length > 100)
{
- StatusMessage = "流水线名称不能为空且长度不超过 100 个字符";
+ SetInfoStatus("流水线名称不能为空且长度不超过 100 个字符");
return;
}
@@ -559,7 +559,7 @@ namespace XplorePlane.ViewModels
{
if (string.IsNullOrWhiteSpace(PipelineName) || PipelineName.Length > 100)
{
- StatusMessage = "流水线名称不能为空且长度不超过 100 个字符";
+ SetInfoStatus("流水线名称不能为空且长度不超过 100 个字符");
return;
}
@@ -586,11 +586,11 @@ namespace XplorePlane.ViewModels
var model = BuildPipelineModel();
await _persistenceService.SaveAsync(model, filePath);
PipelineFileDisplayName = FormatPipelinePath(filePath);
- StatusMessage = $"流水线已保存:{Path.GetFileName(filePath)}";
+ SetInfoStatus($"流水线已保存:{Path.GetFileName(filePath)}");
}
catch (IOException ex)
{
- StatusMessage = $"保存失败:{ex.Message}";
+ SetErrorStatus($"保存失败:{ex.Message}");
}
}
@@ -604,11 +604,11 @@ namespace XplorePlane.ViewModels
File.Delete(_currentFilePath);
NewPipeline();
- StatusMessage = "流水线已删除";
+ SetInfoStatus("流水线已删除");
}
catch (IOException ex)
{
- StatusMessage = $"删除失败:{ex.Message}";
+ SetErrorStatus($"删除失败:{ex.Message}");
}
await Task.CompletedTask;
}
@@ -659,12 +659,12 @@ namespace XplorePlane.ViewModels
}
_logger.Info("流水线已加载:{Name},节点数={Count}", model.Name, PipelineNodes.Count);
- StatusMessage = $"已加载流水线:{model.Name}({PipelineNodes.Count} 个节点)";
+ SetInfoStatus($"已加载流水线:{model.Name}({PipelineNodes.Count} 个节点)");
}
catch (Exception ex)
{
_logger.Warn("加载流水线失败:{Error}", ex.Message);
- StatusMessage = $"加载失败:{ex.Message}";
+ SetErrorStatus($"加载失败:{ex.Message}");
}
}
diff --git a/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml b/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml
index 151340d..a736f81 100644
--- a/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml
+++ b/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml
@@ -289,8 +289,7 @@
-
-
+