using System;
using System.Windows;
using System.Windows.Controls;
using Plugins.Vm.Models;
using TeamAAS;
using TeamAAS.FlowEditor.Plugins;
using TeamAAS.FlowEngine;
namespace Plugins.Vm.Views
{
///
/// VM 工具块节点编辑视图:主区承载海康 VM 自带的流程配置控件 VmProcedureConfigControl,
/// 按“方案路径/流程名”加载方案并绑定,用户直接在 VM 原生界面里编辑流程。
/// 遵循插件视图约定:DataContext 为 VmToolBlockModel(由宿主注入),实现 IPluginViewSave 回写。
///
public partial class VmToolBlockEditView : UserControl, IPluginViewSave
{
public VmToolBlockEditView()
{
InitializeComponent();
Loaded += OnLoaded;
Unloaded += OnUnloaded;
}
private VmToolBlockModel Model => DataContext as VmToolBlockModel;
private void OnLoaded(object sender, RoutedEventArgs e)
{
var model = Model;
if (model == null) return;
TxtTitle.Text = string.IsNullOrWhiteSpace(model.NodeName) ? "VM工具块" : model.NodeName;
LoadAndBind();
}
/// 加载 VM 方案(若未加载)并把流程绑定到配置控件。
private void LoadAndBind()
{
var model = Model;
if (model == null) return;
try
{
if (model.Solution == null && !string.IsNullOrWhiteSpace(model.SolutionPath))
model.Solution = VmRuntime.LoadSolution(model.SolutionPath);
if (model.Solution != null && !string.IsNullOrWhiteSpace(model.ProcedureName))
Config.BindSingleProcedure(model.ProcedureName);
}
catch (Exception ex)
{
DialogHelper.Error($"加载 VM 方案/流程失败:{ex.Message}");
}
}
private void BtnLoad_Click(object sender, RoutedEventArgs e) => LoadAndBind();
/// 属性按钮:配置方案路径/流程名/输入映射/输出终端名(走通用属性网格)。
private void BtnProperties_Click(object sender, RoutedEventArgs e)
{
var model = Model;
if (model == null) return;
PluginLoader.Instance.ParentGroupModel = model;
try
{
if (DialogHelper.EditProperties(model, $"VM工具块属性 - {model.NodeName}"))
{
TxtTitle.Text = string.IsNullOrWhiteSpace(model.NodeName) ? "VM工具块" : model.NodeName;
LoadAndBind();
}
}
finally
{
PluginLoader.Instance.ParentGroupModel = null;
}
}
private void OnUnloaded(object sender, RoutedEventArgs e)
{
//SaveChanges();
PluginLoader.Instance.ParentGroupModel = null;
}
/// 保存:VM 配置控件直接编辑已加载方案,这里把方案写回磁盘。
public void SaveChanges()
{
try { VM.Core.VmSolution.Save(); } catch { /* 未加载方案时忽略 */ }
}
}
}