using DataEntity.Event;
|
using DataEntity.Share;
|
using DataEntity.Sockets.Base;
|
using DataRWDAL;
|
using DataRWDAL.Device;
|
using DriverLib.Engine;
|
using DriverLibrary;
|
using HandyControl.Data;
|
using HxEnum;
|
using HxSocket;
|
using HxSocketImplement.Sockets;
|
//using HxUserManagement;
|
using Microsoft.Win32;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.Configuration;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using System.Windows;
|
using System.Windows.Controls;
|
using System.Windows.Input;
|
using System.Windows.Interop;
|
using System.Windows.Media;
|
using System.Windows.Media.Imaging;
|
using System.Windows.Threading;
|
using System.Xml;
|
using XCommon;
|
using XCommon.Event;
|
using XCommon.Log;
|
using XCommon.Tip;
|
using XCommon.Xml;
|
using XCore;
|
using XHandler.Class;
|
using XHandler.Class.DataEx;
|
using XHandler.Controls;
|
using XHandler.Controls.Run.Com;
|
using XHandler.View;
|
using XHandler.View.BacteriaPickResult;
|
using XHandler.View.BacteriaProperty;
|
using XHandler.View.Com;
|
using XHandler.View.Consumables;
|
using XHandler.View.Device;
|
using XHandler.View.Dialog;
|
using XHandler.View.Liquids;
|
using XHandler.View.Login;
|
using XHandler.View.MethodProperty;
|
using XHandler.View.DataLog;
|
using XHandler.View.OperateAudit;
|
using XHandler.View.TestList;
|
using XHandler.View.MoveLiquidReport;
|
using XHandler.View.Tabletop;
|
using XImagingXhandler.XDAL;
|
using static DataEntity.Event.EventExArgs;
|
using ResultType = DriverLib.Engine.ResultType;
|
using SystemInformation = XHandler.View.About.SystemInformation;
|
using XCoreBLL;
|
using Sodao.FastSocket.Server;
|
using BiosenSocketService;
|
using System.Windows.Controls.Primitives;
|
using DataEntity;
|
using MySqlX.XDevAPI.Common;
|
|
namespace XHandler
|
{
|
/// <summary>
|
/// MainWindow.xaml 的交互逻辑
|
/// </summary>
|
public partial class MainWindow : Window
|
{
|
#region 变量
|
private DeviceStatus deviceStatus = null;
|
public ConsumableManagement consumableManagement = null;
|
private DeveiceManagement deveiceManagement = null;
|
private BacteriaManagement bacteriaManagement = null;
|
private BacteriaPickResult bacteriaPickResult = null;
|
private DataLogList dataLogList = null;
|
private OperateAuditList operateAuditList = null;
|
private ExperimentFolder experimentFolder = null;
|
private MoveLiquidResult moveLiquidResult = null;
|
private TabletopManagement tabletopManagement = null;
|
private UIElement uIElement = null;
|
private DispatcherTimer lockScreenTimer; //界面锁屏检测定时器
|
private DispatcherTimer checkConnectTimer; //设备连接状态检测定时器
|
private Timer heartConnectTimer; //成像设备连接心跳包发送定时器
|
|
public bool isAuthorEnable = false;//本次加密狗是否启动
|
public bool isAuthorPreviewEnable = false;//前一次加密狗是否启动
|
|
#region BLL
|
private ChoiceBll choiceBll = new ChoiceBll();
|
private CoatingBll coatingBll = new CoatingBll();
|
private HoldingLabwareBll holdingLabwareBll = new HoldingLabwareBll();
|
public OperateAuditLogBll operateAuditLogBll = new OperateAuditLogBll();
|
#endregion
|
|
public static int tickcount = 30;//30分钟,锁屏控制
|
public string CurWorkFlowName = "";
|
public TestDesign testDesign = null;
|
public LiquidManagement liquidManagement = null;
|
public bool EnableSimulator = false; //false:不启动;ture:启动
|
public bool IsOpenDoor = false; //false:门已关;ture:门已开
|
public bool wasLoadedTip = false; //false:抢上无头;true抢上有头
|
public bool connectedEquip = false; //true:已连接上设备;false:未连接上设备;
|
public bool firstConnectedEquip = false; //初次连接上驱动
|
public bool[] enableManualSetDevice; //保存是否已使用过手动设置设备的开关
|
// 拍照通讯类
|
public HxSocketClient socketTcpListener = new HxSocketClient(ConfigurationManager.AppSettings["socketClientIP"].ToString(), Convert.ToInt32(ConfigurationManager.AppSettings["socketClientPort"]));
|
public List<MethodMsg> methodMsgs = new List<MethodMsg>();//用于存放各种异常错误待处理消息
|
public Stack<string> stackOperateDialog = new Stack<string>();
|
public int remoteMark = 0;//远程控制信号,控制窗口开关;1:跳过;2重试;3取消;4确认继续
|
|
public RunWnd runWnd = null; //运行界面对象
|
public bool wasExecuteInitial = false;
|
|
// 挑菌位数字ID
|
public int ChoiceLatticeId = 0;
|
|
//角色控制菜单
|
List<RoleMenu> roleMenuAllList = null;
|
#endregion
|
|
#region 界面类构造函数
|
public MainWindow()
|
{
|
EventBind.MainEvent -= MainEvent;
|
EventBind.MainEvent += MainEvent;
|
|
string choiceLatticeId = ConfigurationManager.AppSettings["choiceLatticeId"].ToString();
|
if (choiceLatticeId.Length >= 1)
|
{
|
ChoiceLatticeId = Convert.ToInt32(choiceLatticeId.Substring(1));
|
}
|
|
InitializeComponent();
|
|
this.Width = Shared.Config.DisplaySizeW;
|
this.Height = Shared.Config.DisplaySizeH;
|
this.Top = Shared.Config.DisplayMarginTop;
|
this.Left = 0;
|
|
Shared.Main = this;
|
}
|
#endregion
|
|
#region 界面加载完成事件
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
if (Shared.SoftwareInformation.category.Equals(1))//区分设备类型,加载登录界面
|
{
|
xHandlerLogin xhandlerlogin = new xHandlerLogin();
|
xhandlerlogin.mainWindow = this;
|
xhandlerlogin.okEvent += Xhandlerlogin_okEvent;
|
xhandlerlogin.closeEvent += login_closeEvent;
|
loginGrid.Children.Add(xhandlerlogin);
|
}
|
else
|
{
|
BacteriaLogin bacterialogin = new BacteriaLogin();
|
bacterialogin.mainWindow = this;
|
bacterialogin.okEvent += Xhandlerlogin_okEvent;
|
bacterialogin.closeEvent += login_closeEvent;
|
loginGrid.Children.Add(bacterialogin);
|
}
|
|
rootGrid.Visibility = Visibility.Hidden;
|
ComponentDispatcher.ThreadFilterMessage -= ComponentDispatcher_ThreadFilterMessage;
|
ComponentDispatcher.ThreadFilterMessage += ComponentDispatcher_ThreadFilterMessage;
|
|
// 开关门信号检测
|
MethodAction.Instance.SignalChanged -= this.SignalChangedEvent;
|
MethodAction.Instance.SignalChanged += this.SignalChangedEvent;
|
|
#region 检查加密狗是否正确安装定时器
|
DispatcherTimer dispatcherTimer = new DispatcherTimer();
|
dispatcherTimer.Interval = TimeSpan.FromMilliseconds(Convert.ToInt32(ConfigurationManager.AppSettings["dogCheckTime"].ToString()));
|
dispatcherTimer.Tick += DispatcherTimer_Tick;
|
dispatcherTimer.Start();
|
#endregion
|
|
#region 界面锁屏检测定时器
|
lockScreenTimer = new DispatcherTimer();
|
lockScreenTimer.Interval = TimeSpan.FromMilliseconds(Convert.ToInt32(ConfigurationManager.AppSettings["mouseMoveCheckTime"].ToString())); // 1分钟
|
lockScreenTimer.Tick += timer_Tick;
|
lockScreenTimer.Start();
|
#endregion
|
|
#region 驱动连接状态检测定时器
|
checkConnectTimer = new DispatcherTimer();
|
checkConnectTimer.Interval = TimeSpan.FromMilliseconds(1000);
|
checkConnectTimer.Tick += checkConnectTimer_Tick;
|
#endregion
|
|
#region 开启工作站服务、作为客户端连接外部服务
|
|
if ("true" == ConfigurationManager.AppSettings.Get("AutoService"))
|
{
|
// 开启服务端监听
|
//SocketInteriorService.OpenService();
|
InitService();
|
}
|
|
new Thread(() =>
|
{
|
// 连接设备
|
ConnectService();
|
}).Start();
|
#endregion
|
|
//btnStartFirstPage_Click(null, null);
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
#region 连接设备
|
/// <summary>
|
/// 连接设备
|
/// </summary>
|
/// <returns></returns>
|
public bool ConnectService()
|
{
|
bool IsOk = false;
|
|
var deviceConfigResult = DeviceConfigDB.GetDeviceConfigListByProjectId(Shared.SoftwareInformation.software_information_id);
|
if (deviceConfigResult == null || deviceConfigResult.Count == 0)
|
{
|
return IsOk;
|
}
|
|
// 作为客户端连接设备的服务端
|
var result = EquConnect.ConnectService();
|
var resultList = JsonConvert.DeserializeObject<List<string>>(result.msg);
|
|
StringBuilder sb = new StringBuilder();
|
StringBuilder sbByTemp = new StringBuilder();
|
foreach (var item in resultList)
|
{
|
if (item.Contains("失败"))
|
{
|
sbByTemp.Append(item + Environment.NewLine);
|
}
|
sb.Append(item + Environment.NewLine);
|
}
|
|
if (sbByTemp.ToString().Contains("失败"))
|
{
|
ShowTip.ShowNotice(sbByTemp.ToString(), InfoType.Error);
|
IsOk = false;
|
}
|
else
|
{
|
ShowTip.ShowNotice("外部设备【连接成功】", InfoType.Success);
|
IsOk = true; ;
|
}
|
|
return IsOk;
|
}
|
#endregion
|
#endregion
|
|
#region 开关门信号检测
|
/// <summary>
|
/// 开关门信号检测
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void SignalChangedEvent(object sender, SignalChangedEventArgs e)
|
{
|
LoggerHelper.InfoLog(string.Format("[SignalChangedEvent]: Name = {0}, Value = {1}", e.Name, e.Value));
|
|
if (e.Name.Equals("FrontDoor"))
|
{
|
IsOpenDoor = e.Value;
|
if (runWnd != null && IsOpenDoor)
|
{
|
// 操作流程
|
runWnd.OperateExpFolw(true);
|
}
|
}
|
}
|
#endregion
|
|
#region 定时器事件——检测是否在30分钟内持续操作了本软件,否则锁屏
|
private void timer_Tick(object sender, EventArgs e)
|
{
|
//Console.WriteLine("次数:" + tickcount.ToString());
|
//tickcount--;
|
//if (tickcount == 0)
|
//{
|
// if (rootGrid.Visibility == Visibility.Hidden || loginGrid.Visibility == Visibility.Visible)
|
// {
|
// return;
|
// }
|
// //timer.Stop();
|
// //锁屏
|
// PlsLookWin plsToolTipWin = new PlsLookWin(Properties.Resources.strLockInfo, usernamestr, passwordstr);
|
// plsToolTipWin.WindowStartupLocation = WindowStartupLocation.CenterScreen;
|
// plsToolTipWin.Height = this.ActualHeight;
|
// plsToolTipWin.Width = this.ActualWidth;
|
|
// SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(130, 0, 0, 0));
|
// plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush;
|
// if (!wasEnableOverTimePopWin)
|
// {
|
// wasEnableOverTimePopWin = true;
|
// plsToolTipWin.ShowDialog();
|
// wasEnableOverTimePopWin = false;
|
// }
|
// //tickcount = 30;
|
// //timer.Start();
|
//}
|
}
|
#endregion
|
|
#region 定时器事件——检测设备是否连接
|
private void checkConnectTimer_Tick(object sender, EventArgs e)
|
{
|
if (MethodAction.Instance != null && !MethodAction.Instance.Connected && connectedEquip)
|
{
|
// 状态0 未链接 黄闪
|
CommonBll.StatusLamp(0, false);
|
|
EnableSimulator = true;
|
connectedEquip = false;
|
string TargetPath = "Assets/disconnect.png";
|
imgDeviceStatus.Source = new BitmapImage(new Uri(TargetPath, UriKind.Relative));
|
}
|
else if (MethodAction.Instance != null && MethodAction.Instance.Connected && !connectedEquip)
|
{
|
// 状态1 链接成功 蓝亮
|
CommonBll.StatusLamp(1, false);
|
|
connectedEquip = true;
|
string TargetPath = "Assets/connect.png";
|
imgDeviceStatus.Source = new BitmapImage(new Uri(TargetPath, UriKind.Relative));
|
}
|
}
|
#endregion
|
|
#region 定时器时间——定时向成像设备发送心跳数据
|
private void heartConnectTimer_Tick(object sender)
|
{
|
try
|
{
|
if (socketTcpListener.IsConnect())
|
{
|
socketTcpListener.SendMessage(GenerateHeatCommand(), false);
|
}
|
else
|
{
|
//LoggerHelper.DebugLog("[heartConnectTimer_Tick]: socketTcpListener.IsConnect = false");
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("[heartConnectTimer_Tick]:ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 获取向成像设备发送心跳数据
|
/// </summary>
|
/// <returns></returns>
|
public string GenerateHeatCommand()
|
{
|
string strResult = string.Empty;
|
strResult = "{" + "message_id:\"" + Guid.NewGuid().ToString() +
|
"\",message_type:0" +
|
",equipment_id:\"ID2023\"" +
|
",workflow_id:\"\"" +
|
",experiment_id:\"" + "\"" +
|
",experiment_status:0" +
|
",actual_device_status:0" +
|
",connected:1" +
|
",timestamp:\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\"}";
|
|
return strResult;
|
|
}
|
#endregion
|
|
#region 本装软件界面状态消息检测事件
|
private void ComponentDispatcher_ThreadFilterMessage(ref MSG m, ref bool handled)
|
{
|
//如果检测到有鼠标或则键盘的消息,则使计数为初始值0.....
|
if (m.message == 0x0200 || m.message == 0x0201 || m.message == 0x0204 || m.message == 0x0207)
|
{
|
tickcount = 30;
|
//Console.WriteLine("统计:" + tickcount.ToString());
|
}
|
}
|
#endregion
|
|
#region 定时器事件--检测加密狗状态
|
private void DispatcherTimer_Tick(object sender, EventArgs e)
|
{
|
bool isAuthor = true;// IsAuthority.IsAuthorityDog();
|
if (isAuthor)
|
{
|
isAuthorEnable = true;
|
if (isAuthorPreviewEnable == isAuthorEnable)
|
{
|
}
|
else
|
{
|
isAuthorPreviewEnable = true;
|
if (runWnd != null)
|
{
|
if (RunWnd.IsRunning && rootGrid.Visibility.Equals(Visibility.Visible))
|
{
|
runWnd.btnPause_Click(sender, null);
|
}
|
}
|
}
|
}
|
else
|
{
|
isAuthorEnable = false;
|
rootGrid.Visibility = Visibility.Collapsed;
|
loginGrid.Visibility = Visibility.Visible;
|
if (isAuthorPreviewEnable == isAuthorEnable)
|
{
|
}
|
else
|
{
|
if (runWnd != null)
|
{
|
if (RunWnd.IsRunning)
|
{
|
runWnd.btnPause_Click(sender, null);
|
}
|
}
|
}
|
}
|
}
|
#endregion
|
|
#region 登录确认按钮事件
|
private void Xhandlerlogin_okEvent(object sender, CustomRoutedEventArgs<string> e)
|
{
|
SetMenusFromRole();
|
string name = e.param as string;
|
textBlockLoginUser.Text = Properties.Resources.strUserName1 + name;
|
rootGrid.Visibility = Visibility.Visible;
|
rootGridTitle.RowDefinitions[1].Height = new GridLength(0);
|
loginGrid.Visibility = Visibility.Collapsed;
|
|
// 连接设备硬件初始化
|
Thread deviceTD = new Thread(InitializeDevice);
|
deviceTD.Start();
|
|
// 建立成像的通信连接
|
connectToCaptureAndCControl();
|
|
InitService();
|
|
btnTestDesign.IsChecked = true;
|
isAuthorPreviewEnable = true;
|
}
|
#endregion
|
|
#region 通过角色权限设置界面
|
/// <summary>
|
/// 通过角色权限设置界面
|
/// </summary>
|
private void SetMenusFromRole()
|
{
|
string userid = UserDB.GetUserInfByUserName(Shared.User.username).id;
|
//所有菜单
|
roleMenuAllList = UserDB.GetWholeRoleMenuByUserId(userid);
|
|
SolidColorBrush mybtn2_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(117, 123, 123, 125));//禁用颜色
|
|
//左侧主菜单权限控制
|
//首页
|
var firstPage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuFirstPage));
|
if (firstPage != null)
|
{
|
btnStartFirstPage.IsEnabled = true;
|
btnStartFirstPage.Background = Brushes.Transparent;
|
}
|
else
|
{
|
btnStartFirstPage.IsEnabled = false;
|
btnStartFirstPage.Background = mybtn2_Brush;
|
}
|
//液体管理
|
var LiquidManager = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLiquidManage));
|
if (LiquidManager != null)
|
{
|
btnLiquidManager.IsEnabled = true;
|
btnLiquidManager.Background = Brushes.Transparent;
|
btnLiquidManager.Visibility = Visibility.Visible;
|
if (Shared.SoftwareInformation.software_device_number.Equals(DeviceCategory.DeviceHXELEC))
|
{
|
btnLiquidManager.Content = Properties.Resources.strColloid;
|
}
|
}
|
else
|
{
|
btnLiquidManager.IsEnabled = false;
|
btnLiquidManager.Background = mybtn2_Brush;
|
btnLiquidManager.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[1].Height = new GridLength(0);
|
}
|
|
//耗材管理
|
var LabwareManager = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLabwareManage));
|
if (LabwareManager != null)
|
{
|
btnConsumableManager.IsEnabled = true;
|
btnConsumableManager.Background = Brushes.Transparent;
|
btnConsumableManager.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnConsumableManager.IsEnabled = false;
|
btnConsumableManager.Background = mybtn2_Brush;
|
btnConsumableManager.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[2].Height = new GridLength(0);
|
}
|
|
//设备管理
|
var DeviceManager = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuDeviceManage));
|
if (DeviceManager != null)
|
{
|
btnDeviceManager.IsEnabled = true;
|
btnDeviceManager.Background = Brushes.Transparent;
|
btnDeviceManager.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnDeviceManager.IsEnabled = false;
|
btnDeviceManager.Background = mybtn2_Brush;
|
btnDeviceManager.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[4].Height = new GridLength(0);
|
}
|
|
//实验设计
|
var TestDesignMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuTestDesign));
|
if (TestDesignMenu != null)
|
{
|
btnTestDesign.IsEnabled = true;
|
btnTestDesign.Background = Brushes.Transparent;
|
btnTestDesign.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnTestDesign.IsEnabled = false;
|
btnTestDesign.Background = mybtn2_Brush;
|
btnTestDesign.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[0].Height = new GridLength(0);
|
}
|
|
//菌落管理
|
var BacteriaMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuBacteriaManage));
|
if (BacteriaMenu != null)
|
{
|
btnBacteriaManager.IsEnabled = true;
|
btnBacteriaManager.Background = Brushes.Transparent;
|
btnBacteriaManager.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnBacteriaManager.IsEnabled = false;
|
btnBacteriaManager.Background = mybtn2_Brush;
|
btnBacteriaManager.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[3].Height = new GridLength(0);
|
}
|
|
//菌落挑选
|
var BacteriaChoiceMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuBacteriaChoice));
|
if (BacteriaChoiceMenu != null)
|
{
|
btnBacteriaPick.IsEnabled = true;
|
btnBacteriaPick.Background = Brushes.Transparent;
|
btnBacteriaPick.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnBacteriaPick.IsEnabled = false;
|
btnBacteriaPick.Background = mybtn2_Brush;
|
btnBacteriaPick.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[5].Height = new GridLength(0);
|
}
|
|
//实验列表
|
var TestListMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuTestList));
|
if (TestListMenu != null)
|
{
|
btnTestList.IsEnabled = true;
|
btnTestList.Background = Brushes.Transparent;
|
btnTestList.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnTestList.IsEnabled = false;
|
btnTestList.Background = mybtn2_Brush;
|
btnTestList.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[8].Height = new GridLength(0);
|
}
|
|
//API对接
|
//var APIMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuAPI));
|
//if (APIMenu != null)
|
//{
|
// btnLims.IsEnabled = true;
|
// btnLims.Background = Brushes.Transparent;
|
//}
|
//else
|
//{
|
// btnLims.IsEnabled = false;
|
// btnLims.Background = mybtn2_Brush;
|
//}
|
|
//数据管理
|
var DataMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuDataManage));
|
if (DataMenu != null)
|
{
|
btnDataManager.IsEnabled = true;
|
btnDataManager.Background = Brushes.Transparent;
|
btnDataManager.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnDataManager.IsEnabled = false;
|
btnDataManager.Background = mybtn2_Brush;
|
btnDataManager.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[6].Height = new GridLength(0);
|
}
|
|
//审计追踪
|
var CheckTrackMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuCheckTrack));
|
if (CheckTrackMenu != null)
|
{
|
btnAuditTrail.IsEnabled = true;
|
btnAuditTrail.Background = Brushes.Transparent;
|
btnAuditTrail.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnAuditTrail.IsEnabled = false;
|
btnAuditTrail.Background = mybtn2_Brush;
|
btnAuditTrail.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[7].Height = new GridLength(0);
|
}
|
|
//移液报告
|
var MoveLiquidMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuMoveLiquid));
|
if (MoveLiquidMenu != null)
|
{
|
btnMoveLiquid.IsEnabled = true;
|
btnMoveLiquid.Background = Brushes.Transparent;
|
btnMoveLiquid.Visibility = Visibility.Visible;
|
if (Shared.SoftwareInformation.software_device_number.Equals(DeviceCategory.DeviceHXELEC))
|
{
|
btnMoveLiquid.Content = Properties.Resources.strMoveColloid;
|
}
|
}
|
else
|
{
|
btnMoveLiquid.IsEnabled = false;
|
btnMoveLiquid.Background = mybtn2_Brush;
|
btnMoveLiquid.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[9].Height = new GridLength(0);
|
}
|
|
//台面管理
|
var TabletopManageMenu = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuTabletopManage));
|
if (TabletopManageMenu != null)
|
{
|
btnTabletop.IsEnabled = true;
|
btnTabletop.Background = Brushes.Transparent;
|
btnTabletop.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnTabletop.IsEnabled = false;
|
btnTabletop.Background = mybtn2_Brush;
|
btnTabletop.Visibility = Visibility.Collapsed;
|
gdLeftImageList.RowDefinitions[10].Height = new GridLength(0);
|
}
|
|
//上部主菜单权限控制
|
//权限控制
|
var MenuUserManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuUserManage));
|
|
if (MenuUserManage != null)
|
{
|
btnUserManager.IsEnabled = true;
|
btnUserManager.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnUserManager.IsEnabled = false;
|
btnUserManager.Visibility = Visibility.Collapsed;
|
gridMenu.ColumnDefinitions[3].Width = new GridLength(0);
|
}
|
|
|
//系统设置
|
var MenuSystemSettingManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuSystemSetting));
|
|
if (MenuSystemSettingManage != null)
|
{
|
btnSettings.IsEnabled = true;
|
btnSettings.Visibility = Visibility.Visible;
|
}
|
else
|
{
|
btnSettings.IsEnabled = false;
|
btnSettings.Visibility = Visibility.Collapsed;
|
gridMenu.ColumnDefinitions[4].Width = new GridLength(0);
|
}
|
}
|
#endregion
|
|
#region 启动BiosenSocketService
|
/// <summary>
|
/// 启动BiosenSocketService
|
/// </summary>
|
private void InitService()
|
{
|
try
|
{
|
string value = ConfigurationManager.AppSettings.Get("AutoService");
|
if (value == "true")
|
{
|
SocketServerManager.Init();
|
SocketServerManager.Start();
|
|
BiosenHttpServer.Init();
|
|
|
HttpServer.Init(HttpServer.GetLocalIP(), ConfigurationManager.AppSettings["socketURLPort"].ToString(), "test1.json", "启动项目是要初始化这行,才能启动访问查看WEB页面地址,这行代码不要删。" + DateTime.Now);
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("System error:" + ex.Source + ":" + ex.Message.ToString());
|
}
|
}
|
#endregion
|
|
#region 建立成像的通信连接
|
public void connectToCaptureAndCControl()
|
{
|
try
|
{
|
if (ConfigurationManager.AppSettings["openTakePhoto"].ToString() == "true")
|
{
|
Task.Run(() =>
|
{
|
bool bResult = socketTcpListener.connectServer(ConfigurationManager.AppSettings["socketClientIP"].ToString(), Convert.ToInt32(ConfigurationManager.AppSettings["socketClientPort"]));//启动成像系统通信服务
|
if (bResult)
|
{
|
LoggerHelper.InfoLog("Capture system was successfully connected!");
|
}
|
else
|
{
|
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
|
{
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin("相机系统设备通信失败!");
|
plsToolTipWin.Height = this.ActualHeight;
|
plsToolTipWin.Width = this.ActualWidth;
|
|
SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(70, 0, 0, 0));
|
plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush;
|
plsToolTipWin.btnCancel.Visibility = Visibility.Hidden;
|
plsToolTipWin.ShowDialog();
|
}));
|
|
LoggerHelper.InfoLog("Capture system was failed connected!");
|
}
|
});
|
heartConnectTimer = new System.Threading.Timer(heartConnectTimer_Tick, null, 0, 1000);
|
}
|
checkConnectTimer.Start();
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 初始化链接设备
|
public void InitializeDevice()
|
{
|
try
|
{
|
HxResult ret = MethodAction.Instance.Initialize();
|
wasExecuteInitial = true;
|
this.Dispatcher.Invoke(new Action(() =>
|
{
|
if (ret.Result != ResultType.Success)
|
{
|
// 状态0 未链接 黄闪
|
ret = CommonBll.StatusLamp(0, false);
|
EnableSimulator = true;
|
connectedEquip = false;
|
}
|
else
|
{
|
// 状态1 链接成功 蓝亮
|
ret = CommonBll.StatusLamp(1, false);
|
string TargetPath = "Assets/connect.png";
|
imgDeviceStatus.Source = new BitmapImage(new Uri(TargetPath, UriKind.Relative));
|
connectedEquip = true;
|
|
// 连接设备初始化后
|
DoAfterInitDevice();
|
}
|
}));
|
|
//checkConnectTimer.Start();
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
/// <summary>
|
/// 连接设备初始化后
|
/// </summary>
|
private void DoAfterInitDevice()
|
{
|
#region 自动打开FFU、LED、UV等模块
|
// 软件启动自动打开FFU
|
HxResult ret = MethodAction.Instance.FFU(EnumManagement.GetEnumValue(DeviceStateModeEnum.TurnOn));
|
#endregion
|
|
#region 设置全局速度
|
MethodAction.Instance.GlobalSpeed = Shared.SoftwareInformation.global_speed;
|
#endregion
|
}
|
#endregion
|
|
#region 取消登录事件
|
private void login_closeEvent(object sender, EventArgs e)
|
{
|
this.Close();
|
}
|
#endregion
|
|
#region 右上角退出重新登录按钮
|
private void btnRelogin_Click(object sender, RoutedEventArgs e)
|
{
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin("确定要注销登录吗?");
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult != true)
|
{
|
return;
|
}
|
|
rootGrid.Visibility = Visibility.Collapsed;
|
loginGrid.Visibility = Visibility.Visible;
|
OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("注销退出", "用户:" + Shared.User.username + "注销退出系统", Shared.User.username, "登录模块", "", "", "用户[id:" + Shared.User.username + "]", "成功"));
|
if (runWnd != null)
|
{
|
if (RunWnd.IsRunning)
|
{
|
runWnd.btnPause_Click(sender, null);
|
}
|
}
|
|
}
|
#endregion
|
|
#region 右上角最小化窗口按钮事件
|
private void btnMinimize_Click(object sender, RoutedEventArgs e)
|
{
|
WindowState = WindowState.Minimized;
|
}
|
#endregion
|
|
#region 右上角关闭软件按钮事件
|
private void btnQuit_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin("确定要退出系统吗?");
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult != true)
|
{
|
OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("退出", "用户:" + Shared.User.username + "退出系统", Shared.User.username, "登录模块", "", "", "用户[id:" + Shared.User.username + "]", "成功"));
|
return;
|
}
|
|
this.Close();
|
Application.Current.Shutdown();
|
Environment.Exit(0);
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("退出", "用户:" + Shared.User.username + "退出系统", Shared.User.username, "登录模块", "", "", "用户[id:" + Shared.User.username + "]", "异常失败"));
|
}
|
}
|
#endregion
|
|
#region 切换左侧主菜单按钮事件
|
public void radioButton_Checked(object sender, RoutedEventArgs e)
|
{
|
firstPagePressed = false;
|
btnStartFirstPage.IsChecked = false;
|
btnFirst.Visibility = Visibility.Hidden;
|
btnUserManager.IsChecked = false;
|
btnUser.Visibility = Visibility.Hidden;
|
RadioButton btn = (RadioButton)sender;
|
switch (btn.Name)
|
{
|
case "btnTestDesign": // 实验设计
|
btnOpen.IsEnabled = true;
|
ShowTestDesign();
|
SetTopMenuByRole(btnTestDesign);
|
break;
|
case "btnConsumableManager": // 耗材管理
|
ShowConsumableManagement();
|
SetTopMenuByRole(btnConsumableManager);
|
break;
|
case "btnLiquidManager": // 液体管理
|
ShowLiquidManagement();
|
SetTopMenuByRole(btnLiquidManager);
|
break;
|
case "btnBacteriaManager": // 菌落管理
|
ShowBacteriaManagement();
|
SetTopMenuByRole(btnBacteriaManager);
|
break;
|
case "btnBacteriaPick": // 菌落挑选
|
ShowBacteriaPickResult();
|
SetTopMenuByRole(btnBacteriaPick);
|
break;
|
case "btnDeviceManager": // 设备管理
|
ShowDeviceManagement();
|
SetTopMenuByRole(btnDeviceManager);
|
break;
|
case "btnDataManager":
|
ShowDataLogList();
|
SetTopMenuByRole(btnDataManager);
|
break;
|
case "btnAuditTrail":
|
ShowOperateAuditList();
|
SetTopMenuByRole(btnAuditTrail);
|
break;
|
case "btnTestList":
|
ShowTestList(); //实验列表
|
SetTopMenuByRole(btnTestList);
|
break;
|
case "btnMoveLiquid":
|
ShowMoveLiquidReport(); //移液报告
|
SetTopMenuByRole(btnMoveLiquid);
|
break;
|
case "btnTabletop":
|
ShowTabletopTemplate(); //台面模板
|
SetTopMenuByRole(btnTabletop);
|
break;
|
default:
|
break;
|
}
|
}
|
#endregion
|
|
#region 根据用户角色权限设置顶部菜单
|
public void SetTopMenuByRole(ImageRadioButton imageRadioButton)
|
{
|
try
|
{
|
string userid = UserDB.GetUserInfByUserName(Shared.User.username).id;
|
//所有菜单
|
List<RoleMenu> roleMenuAllList = UserDB.GetWholeRoleMenuByUserId(userid);
|
//权限控制
|
var MenuSystemSetting = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(imageRadioButton.Content.ToString()));
|
if (MenuSystemSetting != null)
|
{
|
if (MenuSystemSetting.rolemenuchildren != null)
|
{
|
var SubMenuNew = MenuSystemSetting.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuNew));
|
if (SubMenuNew != null)
|
{
|
btnNew.Visibility = Visibility.Visible;
|
btnNew.IsEnabled = true;
|
//gridOperMenu.ColumnDefinitions[0].Width = new GridLength(80);
|
}
|
else
|
{
|
btnNew.Visibility = Visibility.Collapsed;
|
//gridOperMenu.ColumnDefinitions[0].Width = new GridLength(0);
|
}
|
|
var SubMenuOpen = MenuSystemSetting.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuOpen));
|
if (SubMenuOpen != null)
|
{
|
btnOpen.Visibility = Visibility.Visible;
|
//gridOperMenu.ColumnDefinitions[1].Width = new GridLength(80);
|
}
|
else
|
{
|
btnOpen.Visibility = Visibility.Collapsed;
|
//gridOperMenu.ColumnDefinitions[1].Width = new GridLength(0);
|
}
|
|
var SubMenuSave = MenuSystemSetting.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuSave));
|
if (SubMenuSave != null)
|
{
|
btnSave.Visibility = Visibility.Visible;
|
//gridOperMenu.ColumnDefinitions[2].Width = new GridLength(80);
|
}
|
else
|
{
|
btnSave.Visibility = Visibility.Collapsed;
|
//gridOperMenu.ColumnDefinitions[2].Width = new GridLength(0);
|
}
|
|
var SubMenuAsSave = MenuSystemSetting.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuAsSave));
|
if (SubMenuAsSave != null)
|
{
|
btnSaveAs.Visibility = Visibility.Visible;
|
//gridOperMenu.ColumnDefinitions[3].Width = new GridLength(80);
|
}
|
else
|
{
|
btnSaveAs.Visibility = Visibility.Collapsed;
|
//gridOperMenu.ColumnDefinitions[3].Width = new GridLength(0);
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("Error", ex);
|
}
|
}
|
#endregion
|
|
#region 主内容区域显示--台面模板
|
private void ShowTabletopTemplate()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (tabletopManagement == null)
|
{
|
tabletopManagement = new TabletopManagement();
|
tabletopManagement.mainWindow = this;
|
gridContent.Children.Add(tabletopManagement);
|
}
|
else
|
{
|
gridContent.Children.Add(tabletopManagement);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = true;
|
}
|
#endregion
|
|
#region 主内容区域显示——审计界面
|
private void ShowOperateAuditList()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (operateAuditList == null)
|
{
|
operateAuditList = new OperateAuditList();
|
gridContent.Children.Add(operateAuditList);
|
}
|
else
|
{
|
gridContent.Children.Add(operateAuditList);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
}
|
#endregion
|
|
#region 主内容区域显示——数据界面
|
private void ShowDataLogList()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (dataLogList == null)
|
{
|
dataLogList = new DataLogList();
|
gridContent.Children.Add(dataLogList);
|
}
|
else
|
{
|
gridContent.Children.Add(dataLogList);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
}
|
#endregion
|
|
#region 主内容区域显示——实验列表界面
|
private void ShowTestList()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (experimentFolder == null)
|
{
|
experimentFolder = new ExperimentFolder();
|
experimentFolder.mainWindow = this;
|
gridContent.Children.Add(experimentFolder);
|
}
|
else
|
{
|
gridContent.Children.Add(experimentFolder);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
|
}
|
#endregion
|
|
#region 主内容区域显示——移液报告界面
|
private void ShowMoveLiquidReport()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (moveLiquidResult == null)
|
{
|
moveLiquidResult = new MoveLiquidResult();
|
moveLiquidResult.mainWindow = this;
|
gridContent.Children.Add(moveLiquidResult);
|
}
|
else
|
{
|
gridContent.Children.Add(moveLiquidResult);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
|
}
|
#endregion
|
|
#region 主内容区域显示——菌落挑选结果界面
|
private void ShowBacteriaPickResult()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (bacteriaPickResult == null)
|
{
|
bacteriaPickResult = new BacteriaPickResult();
|
gridContent.Children.Add(bacteriaPickResult);
|
}
|
else
|
{
|
gridContent.Children.Add(bacteriaPickResult);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
}
|
#endregion
|
|
#region 主内容区域显示——菌落管理界面
|
private void ShowBacteriaManagement()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (bacteriaManagement == null)
|
{
|
bacteriaManagement = new BacteriaManagement();
|
gridContent.Children.Add(bacteriaManagement);
|
}
|
else
|
{
|
gridContent.Children.Add(bacteriaManagement);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = true;
|
}
|
#endregion
|
|
#region 主内容区域显示——台面模板管理界面
|
private void ShowTabletopTemplateManagement()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (tabletopManagement == null)
|
{
|
tabletopManagement = new TabletopManagement();
|
gridContent.Children.Add(tabletopManagement);
|
}
|
else
|
{
|
gridContent.Children.Add(tabletopManagement);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = true;
|
}
|
#endregion
|
|
#region 主内容区域显示——实验设计界面
|
public void ShowTestDesign()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (testDesign == null)
|
{
|
testDesign = new TestDesign();
|
gridContent.Children.Add(testDesign);
|
}
|
else
|
{
|
gridContent.Children.Add(testDesign);
|
}
|
gridControl.IsEnabled = true;
|
gridOperMenu.IsEnabled = true;
|
}
|
#endregion
|
|
#region 主内容区域显示——耗材管理界面
|
private void ShowConsumableManagement()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (consumableManagement == null)
|
{
|
consumableManagement = new ConsumableManagement();
|
gridContent.Children.Add(consumableManagement);
|
}
|
else
|
{
|
gridContent.Children.Add(consumableManagement);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = true;
|
|
//权限控制
|
var MenuLabwareManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLabwareManage));
|
if (MenuLabwareManage != null)
|
{
|
var MenuLabwareNew = MenuLabwareManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuNew));
|
if (MenuLabwareNew != null)
|
{
|
btnNew.IsEnabled = true;
|
}
|
else
|
{
|
btnNew.IsEnabled = false;
|
}
|
|
var MenuLabwareOpen = MenuLabwareManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuOpen));
|
if (MenuLabwareOpen != null)
|
{
|
btnOpen.IsEnabled = true;
|
}
|
else
|
{
|
btnOpen.IsEnabled = false;
|
}
|
|
var MenuLabwareSave = MenuLabwareManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuSave));
|
if (MenuLabwareSave != null)
|
{
|
btnSave.IsEnabled = true;
|
}
|
else
|
{
|
btnSave.IsEnabled = false;
|
}
|
|
var MenuLabwareAsSave = MenuLabwareManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuAsSave));
|
if (MenuLabwareAsSave != null)
|
{
|
btnSaveAs.IsEnabled = true;
|
}
|
else
|
{
|
btnSaveAs.IsEnabled = false;
|
}
|
}
|
}
|
#endregion
|
|
#region 主内容区域显示——设备管理界面
|
private void ShowDeviceManagement()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (deveiceManagement == null)
|
{
|
deveiceManagement = new DeveiceManagement();
|
gridContent.Children.Add(deveiceManagement);
|
}
|
else
|
{
|
gridContent.Children.Add(deveiceManagement);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
}
|
#endregion
|
|
#region 主内容区域显示——液体管理界面
|
private void ShowLiquidManagement()
|
{
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (liquidManagement == null)
|
{
|
liquidManagement = new LiquidManagement(roleMenuAllList);
|
gridContent.Children.Add(liquidManagement);
|
}
|
else
|
{
|
gridContent.Children.Add(liquidManagement);
|
}
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = true;
|
|
//权限控制
|
var MenuLiquidManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLiquidManage));
|
if (MenuLiquidManage != null)
|
{
|
var MenuLiquidNew = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuNew));
|
if (MenuLiquidNew != null)
|
{
|
btnNew.IsEnabled = true;
|
}
|
else
|
{
|
btnNew.IsEnabled = false;
|
}
|
|
var MenuLiquidOpen = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuOpen));
|
if (MenuLiquidOpen != null)
|
{
|
btnOpen.IsEnabled = true;
|
}
|
else
|
{
|
btnOpen.IsEnabled = false;
|
}
|
|
var MenuLiquidSave = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuSave));
|
if (MenuLiquidSave != null)
|
{
|
btnSave.IsEnabled = true;
|
}
|
else
|
{
|
btnSave.IsEnabled = false;
|
}
|
|
var MenuLiquidAsSave = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuAsSave));
|
if (MenuLiquidAsSave != null)
|
{
|
btnSaveAs.IsEnabled = true;
|
}
|
else
|
{
|
btnSaveAs.IsEnabled = false;
|
}
|
}
|
}
|
#endregion
|
|
#region 主菜单——用户管理按钮事件
|
private void btnUserManager_Click(object sender, RoutedEventArgs e)
|
{
|
firstPagePressed = false;
|
btnStartFirstPage.IsChecked = false;
|
btnUser.Visibility = Visibility.Visible;
|
btnFirst.Visibility = Visibility.Hidden;
|
if (gridContent.Children.Count > 0)
|
{
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
}
|
|
List<ImageRadioButton> listBtn = ViewCom.GetChildObjects<ImageRadioButton>((DependencyObject)gdLeftImageList, typeof(ImageRadioButton));
|
if (listBtn.Count > 0)
|
{
|
foreach (ImageRadioButton i in listBtn)
|
{
|
if (i.IsChecked == true)
|
{
|
i.IsChecked = false;
|
}
|
}
|
}
|
|
UserManagerment um = new UserManagerment(Shared.User.id);
|
um.closeEvent += SubContent_closeEvent;
|
gridContent.Children.Add(um);
|
gridControl.IsEnabled = false;
|
gridOperMenu.IsEnabled = false;
|
}
|
#endregion
|
|
#region 主菜单——用户管理关闭按钮事件
|
private void UC_closeEvent(object sender, EventArgs e)
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid grid = Utilities.FindVisualChild<Grid>(wnd);
|
|
UIElement element = sender as UIElement;
|
grid.Children.Remove(element);
|
}
|
#endregion
|
|
#region 主界面保存按钮事件
|
/// <summary>
|
/// 主界面保存按钮事件
|
/// 判断当前选中的是哪个主菜单
|
/// 由主菜单,判断保存的对象是耗材、液体、还是流程方法
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnSave_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
if (btnTestDesign.IsChecked == true)
|
{
|
// 实验设计
|
SaveTest();
|
}
|
else if (btnConsumableManager.IsChecked == true)
|
{
|
// 耗材管理
|
consumableManagement.SaveConsumable();
|
|
SetObserverNode(testDesign.rootMethod);
|
if (!consumableManagement.observers.Contains(testDesign))
|
{
|
consumableManagement.AddObserver(testDesign);
|
}
|
consumableManagement.Update();
|
}
|
else if (btnLiquidManager.IsChecked == true)
|
{
|
// 液体管理
|
liquidManagement.SaveLiquid();
|
SetObserverNode(testDesign.rootMethod);
|
liquidManagement.Update();
|
}
|
else if (btnBacteriaManager.IsChecked == true)
|
{
|
// 菌落管理
|
bacteriaManagement.SaveBacteria();
|
}
|
else if (btnTabletop.IsChecked == true)
|
{
|
// 台面模板保存
|
tabletopManagement.SaveTabletopTemplate();
|
}
|
}
|
catch (Exception ex)
|
{
|
ShowTip.ShowNotice(string.Format("{0}失败{1}{2}", "保存", Environment.NewLine, ex.Message.ToString()), InfoType.Warning);
|
}
|
}
|
|
/// <summary>
|
/// 设置耗材观察者对象的进入被观察者数据集
|
/// </summary>
|
/// <param name="method">实验设计现有的方法节点树对象</param>
|
public void SetObserverNode(MethodEx method)
|
{
|
int iNum = new MethodListBll().getNumByMethodName(method.method_name);
|
switch (iNum)
|
{
|
case (int)MethodNameEnum.griptransport: // 抓板转移
|
{
|
var obj = method.control as GripTransportProperty;
|
if (obj != null)
|
{
|
if (consumableManagement != null)
|
{
|
if (!consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.holdingLabware: // 夹爪保持开始
|
{
|
var obj = method.control as BeginHoldingLabwareProperty;
|
if (obj != null)
|
{
|
if (consumableManagement != null)
|
{
|
if (!consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.AddObserver(obj);
|
}
|
}
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.endHoldingLabware: // 夹爪保持结束
|
{
|
var obj = method.control as EndHoldingLabwareProperty;
|
if (obj != null)
|
{
|
if (consumableManagement != null)
|
{
|
if (!consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.loadtips: // 安装吸头
|
{
|
var obj = method.control as LoadTipsProperty;
|
if (obj != null)
|
{
|
if (consumableManagement != null)
|
{
|
if (!consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.AddObserver(obj);
|
}
|
}
|
if (systemSettings != null)
|
{
|
if (!systemSettings.observers.Contains(obj))
|
{
|
systemSettings.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.unloadtips: //卸载吸头
|
{
|
var obj = method.control as LoadTipsProperty;
|
if (obj != null)
|
{
|
if (systemSettings != null)
|
{
|
if (!systemSettings.observers.Contains(obj))
|
{
|
systemSettings.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.transferfile: // 文件
|
{
|
var obj = method.control as FileProperty;
|
if (obj != null)
|
{
|
if (consumableManagement != null)
|
{
|
if (!consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.AddObserver(obj);
|
}
|
}
|
if (systemSettings != null)
|
{
|
if (!systemSettings.observers.Contains(obj))
|
{
|
systemSettings.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.aspirate: // 吸液
|
{
|
var obj = method.control as AspirateProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (!liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.AddObserver(obj);
|
}
|
}
|
if (!testDesign.observers.Contains(obj))
|
{
|
testDesign.AddObserver(obj);
|
}
|
if (systemSettings != null)
|
{
|
if (!systemSettings.observers.Contains(obj))
|
{
|
systemSettings.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.dispense: // 排液
|
{
|
var obj = method.control as DispenseProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (!liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.AddObserver(obj);
|
}
|
}
|
if (!testDesign.observers.Contains(obj))
|
{
|
testDesign.AddObserver(obj);
|
}
|
if (systemSettings != null)
|
{
|
if (!systemSettings.observers.Contains(obj))
|
{
|
systemSettings.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.mixing: // 混合
|
{
|
var obj = method.control as MixProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (!liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.AddObserver(obj);
|
}
|
}
|
if (!testDesign.observers.Contains(obj))
|
{
|
testDesign.AddObserver(obj);
|
}
|
if (systemSettings != null)
|
{
|
if (!systemSettings.observers.Contains(obj))
|
{
|
systemSettings.AddObserver(obj);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.dilution: // 梯度稀释
|
{
|
var obj = method.control as DilutionProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (!liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.AddObserver(obj);
|
}
|
}
|
if (!testDesign.observers.Contains(obj))
|
{
|
testDesign.AddObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.waitFor: // 等待
|
{
|
var obj = method.control as WaitforProperty;
|
if (obj != null)
|
{
|
if (!testDesign.observerTimers.Contains(obj))
|
{
|
testDesign.AddObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
default:
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
break;
|
}
|
}
|
|
/// <summary>
|
/// 耗材观察者对象的移除出被观察者数据集
|
/// </summary>
|
/// <param name="method">实验设计现有的方法节点树对象</param>
|
public void RemoveObserverNode(MethodEx method)
|
{
|
int iNum = new MethodListBll().getNumByMethodName(method.method_name);
|
switch (iNum)
|
{
|
case (int)MethodNameEnum.griptransport: // 抓板转移
|
{
|
var obj = method.control as GripTransportProperty;
|
if (obj != null)
|
{
|
if (consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.holdingLabware: // 夹爪保持开始
|
{
|
var obj = method.control as BeginHoldingLabwareProperty;
|
if (obj != null)
|
{
|
if (consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.RemoveObserver(obj);
|
}
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.endHoldingLabware: // 夹爪保持结束
|
{
|
var obj = method.control as EndHoldingLabwareProperty;
|
if (obj != null)
|
{
|
if (consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.loadtips: // 安装吸头
|
{
|
var obj = method.control as LoadTipsProperty;
|
if (obj != null)
|
{
|
if (consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.transferfile: // 文件
|
{
|
var obj = method.control as FileProperty;
|
if (obj != null)
|
{
|
if (consumableManagement.observers.Contains(obj))
|
{
|
consumableManagement.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.aspirate: // 吸液
|
{
|
var obj = method.control as AspirateProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.RemoveObserver(obj);
|
}
|
}
|
if (testDesign.observers.Contains(obj))
|
{
|
testDesign.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.dispense: // 排液
|
{
|
var obj = method.control as DispenseProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.RemoveObserver(obj);
|
}
|
}
|
if (testDesign.observers.Contains(obj))
|
{
|
testDesign.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.mixing: // 混合
|
{
|
var obj = method.control as MixProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.RemoveObserver(obj);
|
}
|
}
|
if (testDesign.observers.Contains(obj))
|
{
|
testDesign.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.dilution: // 梯度稀释
|
{
|
var obj = method.control as DilutionProperty;
|
if (obj != null)
|
{
|
if (liquidManagement != null)
|
{
|
if (liquidManagement.observers.Contains(obj))
|
{
|
liquidManagement.RemoveObserver(obj);
|
}
|
}
|
if (testDesign.observers.Contains(obj))
|
{
|
testDesign.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
case (int)MethodNameEnum.waitFor: // 梯度稀释
|
{
|
var obj = method.control as WaitforProperty;
|
if (obj != null)
|
{
|
if (testDesign.observerTimers.Contains(obj))
|
{
|
testDesign.RemoveObserver(obj);
|
}
|
}
|
else
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
}
|
break;
|
default:
|
{
|
if (method.Children.Count > 0)
|
{
|
foreach (var m in method.Children)
|
{
|
SetObserverNode(m);
|
}
|
}
|
}
|
break;
|
}
|
}
|
|
#region 保存实验
|
/// <summary>
|
/// 保存实验
|
/// </summary>
|
private void SaveTest()
|
{
|
if (string.IsNullOrEmpty(CurWorkFlowName))
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid grid = Utilities.FindVisualChild<Grid>(wnd);
|
|
SaveMethodDlg saveDlg = new SaveMethodDlg();
|
saveDlg.closeEvent += SubWnd_closeEvent;
|
saveDlg.saveEvent += SaveDlg_saveEvent;
|
grid.Children.Add(saveDlg);
|
}
|
else
|
{
|
//PlsToolTipWin plsToolTipWin = new PlsToolTipWin("Do you want to cover this workflow?");
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin("保存当前实验流程?");
|
plsToolTipWin.Height = this.ActualHeight;
|
plsToolTipWin.Width = this.ActualWidth;
|
|
SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0, 0, 0, 0));
|
plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush;
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult == true)
|
{
|
SaveWorkflow(CurWorkFlowName);
|
}
|
}
|
}
|
#endregion
|
#endregion
|
|
#region 主菜单——保存事件
|
private void SaveDlg_saveEvent(object sender, EventArgs e)
|
{
|
SaveMethodDlg saveDlg = (SaveMethodDlg)sender;
|
CurWorkFlowName = saveDlg.methodFullPath;
|
SaveWorkflow(CurWorkFlowName);
|
|
Window wnd = Application.Current.MainWindow;
|
Grid grid = Utilities.FindVisualChild<Grid>(wnd);
|
UIElement element = sender as UIElement;
|
grid.Children.Remove(element);
|
}
|
#endregion
|
|
#region 主菜单——保存实验流程方法
|
/// <summary>
|
/// 主菜单——保存实验流程方法
|
/// </summary>
|
/// <param name="name">保存的全路径</param>
|
/// <param name="isSaveAs">是否另存</param>
|
private void SaveWorkflow(string name, bool isSaveAs = false)
|
{
|
// 构建xml信息
|
XmlHelper xmlHelper = new XmlHelper();
|
xmlHelper.xmlDoc = testDesign.GenerateLaunchXmlDocument();
|
|
//// 流程运行前备份env数据
|
//xmlEnvBak = xmlHelper.xmlDoc.SelectSingleNode("root/env").Clone();
|
|
// 保存方法xml对象
|
bool bIsOk = xmlHelper.SaveXml(name);
|
if (bIsOk)
|
{
|
ShowTip.ShowNotice(string.Format("{0}成功{1}{2}", isSaveAs ? "另存" : "保存", Environment.NewLine, name), InfoType.Success);
|
CurWorkFlowName = name;
|
tbCaption.Text = Properties.Resources.strXHandler + " - " + CurWorkFlowName;
|
|
|
Experiment experimentList = new Experiment();
|
experimentList.experimentid = DateTime.Now.ToString("yyyyMMddHHmmss");
|
string strNameOfFile = CurWorkFlowName.Substring(CurWorkFlowName.LastIndexOf('\\') + 1, CurWorkFlowName.Length - CurWorkFlowName.LastIndexOf('\\') - 1);
|
experimentList.experimentname = strNameOfFile.Substring(0, strNameOfFile.LastIndexOf("."));
|
experimentList.experimentxmlcontent = xmlHelper.xmlDoc.InnerXml.ToString();
|
experimentList.experimentfile = name;
|
experimentList.createtime = DateTime.Now;
|
experimentList.status = 1;
|
experimentList.updatetime = DateTime.Now;
|
ExperimentListDB.AddExperiment(experimentList);
|
}
|
else
|
{
|
ShowTip.ShowNotice(string.Format("{0}失败{1}{2}", isSaveAs ? "另存" : "保存", Environment.NewLine, name), InfoType.Warning);
|
}
|
}
|
#endregion
|
|
#region 主菜单——新建事件
|
private void btnNew_Click(object sender, RoutedEventArgs e)
|
{
|
if (btnLiquidManager.IsChecked == true)
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
|
NewLiquid newLiquid = new NewLiquid();
|
newLiquid.closeEvent += SubWnd_closeEvent;
|
newLiquid.mainWindow = this;
|
//newLiquid.OKEvent += NewLiquidType_OKEvent;
|
parent.Children.Add(newLiquid);
|
|
}
|
else if (btnConsumableManager.IsChecked == true)
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
|
NewConsumable newConsumable = new NewConsumable();
|
newConsumable.closeEvent += SubWnd_closeEvent;
|
newConsumable.OKEvent += NewConsumable_OKEvent;
|
parent.Children.Add(newConsumable);
|
}
|
else if (btnBacteriaManager.IsChecked == true)
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
|
NewBacteria newBacteria = new NewBacteria();
|
newBacteria.closeEvent += SubWnd_closeEvent;
|
newBacteria.OKEvent += NewBacteria_OKEvent;
|
parent.Children.Add(newBacteria);
|
}
|
else if (btnTabletop.IsChecked == true) //新建台面模板
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
|
NewTabletopTemplate newTabletopTemplate = new NewTabletopTemplate();
|
newTabletopTemplate.closeEvent += SubWnd_closeEvent;
|
newTabletopTemplate.OKEvent += NewTabletopTemplate_OKEvent;
|
parent.Children.Add(newTabletopTemplate);
|
}
|
else if (btnTestDesign.IsChecked == true)
|
{
|
if (testDesign.rootMethod.Children.Count > 3)
|
{
|
PlsToolTipWin plsToolTipWin = new PlsToolTipWin("当前实验未保存,是否保存?");
|
plsToolTipWin.Height = this.ActualHeight;
|
plsToolTipWin.Width = this.ActualWidth;
|
|
SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(70, 0, 0, 0));
|
plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush;
|
plsToolTipWin.ShowDialog();
|
if (plsToolTipWin.DialogResult == true)
|
{
|
SaveTest();
|
}
|
else
|
{
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
}
|
}
|
testDesign = new TestDesign();
|
gridContent.Children.Add(testDesign);
|
tbCaption.Text = Properties.Resources.strXHandler;
|
CurWorkFlowName = string.Empty;
|
if (consumableManagement != null)
|
{
|
consumableManagement.observers.Clear();
|
}
|
}
|
}
|
#endregion
|
|
#region 主菜单——新建菌落界面确定按钮事件
|
private void NewBacteria_OKEvent(object sender, CustomRoutedEventArgs<string> e)
|
{
|
string name = e.param as string;
|
Bacteria bacteria = bacteriaManagement.AddNewBacteria(name);
|
if (bacteria != null)
|
{
|
bacteriaManagement.listboxBacteria.SelectedItem = bacteria;
|
}
|
SubWnd_closeEvent(sender, null);
|
}
|
#endregion
|
|
#region 主菜单——新建台面模板界面确定按钮事件
|
private void NewTabletopTemplate_OKEvent(object sender, CustomRoutedEventArgs<string> e)
|
{
|
string name = e.param as string;
|
TabletopTemplate tabletopTemplate = tabletopManagement.AddNewTabletopTemplate(name);
|
if (tabletopTemplate != null)
|
{
|
tabletopManagement.lbxTabletopList.SelectedItem = tabletopTemplate;
|
}
|
SubWnd_closeEvent(sender, null);
|
}
|
#endregion
|
|
#region 主菜单——检查方法属性事件
|
private void btnCheck_Click(object sender, RoutedEventArgs e)
|
{
|
firstPagePressed = false;
|
btnStartFirstPage.IsChecked = false;
|
btnFirst.Visibility = Visibility.Hidden;
|
btnUserManager.IsChecked = false;
|
btnUser.Visibility = Visibility.Hidden;
|
if (btnTestDesign.IsChecked == true)
|
{
|
XmlHelper xmlHelper = new XmlHelper();
|
//从方法中获取列表方法,并构建xml进行保存
|
xmlHelper.xmlDoc = testDesign.GenerateLaunchXmlDocument();
|
|
MethodListBll methodListBll = new MethodListBll();
|
DataCheckResult dr = methodListBll.CheckWorkFlow(xmlHelper.xmlDoc);
|
if (dr.result == 1)
|
{
|
string strError = string.Empty;
|
for (int i = 0; i < dr.errorlist.Count; i++)
|
{
|
if (i == dr.errorlist.Count - 1)
|
{
|
strError += dr.errorlist[i];
|
}
|
else
|
{
|
strError += dr.errorlist[i] + "\r\n";
|
}
|
}
|
if (testDesign.checkPropertyBreak == true)
|
{
|
testDesign.checkPropertyBreak = false;
|
}
|
else
|
{
|
PlsSetProperty plsSetProperty = new PlsSetProperty(strError);
|
plsSetProperty.closeEvent += PlsSetProperty_closeEvent;
|
Window wnd = Application.Current.MainWindow;
|
Grid parent = Utilities.FindVisualChild<Grid>(wnd);
|
parent.Children.Add(plsSetProperty);
|
}
|
}
|
}
|
}
|
private void PlsSetProperty_closeEvent(object sender, EventArgs e)
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid grid = Utilities.FindVisualChild<Grid>(wnd);
|
|
UIElement element = sender as UIElement;
|
grid.Children.Remove(element);
|
}
|
#endregion
|
|
#region 模拟运行
|
public void btnSimulator_Click(object sender, RoutedEventArgs e)
|
{
|
EnableSimulator = true;
|
if (btnTestDesign.IsChecked == true)
|
{
|
ShowRunResult();
|
|
btnOpen.IsEnabled = false;
|
}
|
}
|
#endregion
|
|
#region 真实运行
|
public void btnRun_Click(object sender, RoutedEventArgs e)
|
{
|
//if (connectedEquip)
|
{
|
EnableSimulator = false;
|
if (btnTestDesign.IsChecked == true)
|
{
|
ShowRunResult();
|
}
|
|
btnOpen.IsEnabled = false;
|
}
|
//else
|
//{
|
// PlsToolTipWin plsToolTipWin = new PlsToolTipWin("设备未连接!");
|
// plsToolTipWin.Height = this.ActualHeight;
|
// plsToolTipWin.Width = this.ActualWidth;
|
// SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(70, 0, 0, 0));
|
// plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush;
|
// plsToolTipWin.btnCancel.Visibility = Visibility.Hidden;
|
// plsToolTipWin.ShowDialog();
|
//}
|
}
|
#endregion
|
|
#region 运行界面显示
|
public void ShowRunResult()
|
{
|
// 添加运行的内容
|
MethodEx method = testDesign.GetWorkFlow();
|
if (method == null)
|
{
|
return;
|
}
|
|
XmlHelper xmlHelper = new XmlHelper();
|
// 从方法中获取列表方法,并构建xml进行保存
|
xmlHelper.xmlDoc = testDesign.GenerateLaunchXmlDocument();
|
|
// 保存住非运行的内容
|
if (gridMainContent.Children.Count > 0)
|
{
|
uIElement = gridMain;
|
//gridMainContent.Children.RemoveAt(gridMainContent.Children.Count - 1);
|
gridMainContent.Children.RemoveAt(0);
|
}
|
|
List<LabwareEx> list = testDesign.GetLabwaresOnTable();
|
|
if (RunWnd.hadRun)
|
{
|
if (EnableSimulator)
|
{
|
runWnd.tbxRunTitle.Text = "模拟运行";
|
}
|
else
|
{
|
runWnd.tbxRunTitle.Text = "真机运行";
|
}
|
// gridMainContent.Children.Add(runWnd);
|
gridMainContent.Children.Insert(0, runWnd);
|
return;
|
}
|
|
runWnd = new RunWnd(list, method, EnableSimulator, xmlHelper.xmlDoc);
|
runWnd.mainWindow = this;
|
if (EnableSimulator)
|
{
|
//runWnd.tbxRunTitle.Text = "模拟运行";
|
}
|
// gridMainContent.Children.Add(runWnd);
|
gridMainContent.Children.Insert(0, runWnd);
|
}
|
#endregion
|
|
#region 运行时最新的methode的xml对象
|
/// <summary>
|
/// 运行时最新的methode的xml对象
|
/// </summary>
|
/// <returns></returns>
|
public XmlDocument RefreshRunXml()
|
{
|
XmlHelper xmlHelper = new XmlHelper();
|
//从方法中获取列表方法,并构建xml进行保存
|
xmlHelper.xmlDoc = testDesign.GenerateLaunchXmlDocument();
|
|
return xmlHelper.xmlDoc;
|
}
|
#endregion
|
|
#region 刷新显示界面
|
public void RefreshRunResult()
|
{
|
// 添加运行的内容
|
MethodEx method = testDesign.GetWorkFlow();
|
if (method == null)
|
{
|
return;
|
}
|
|
XmlHelper xmlHelper = new XmlHelper();
|
// 从方法中获取列表方法,并构建xml进行保存
|
xmlHelper.xmlDoc = testDesign.GenerateLaunchXmlDocument();
|
|
// 保存住非运行的内容
|
if (gridMainContent.Children.Count > 0)
|
{
|
uIElement = gridMain;
|
}
|
|
if (runWnd != null)
|
{
|
List<LabwareEx> list = testDesign.GetLabwaresOnTable();
|
runWnd.RunWndRefresh(list, method, EnableSimulator, xmlHelper.xmlDoc);
|
}
|
}
|
#endregion
|
|
#region 新建耗材点击ok事件
|
private void NewConsumable_OKEvent(object sender, CustomRoutedEventArgs<Labware> e)
|
{
|
Labware labware = e.param as Labware;
|
|
consumableManagement.AddNewLabware(labware);
|
SetObserverNode(testDesign.rootMethod);
|
consumableManagement.Update();
|
SubWnd_closeEvent(sender, null);
|
}
|
#endregion
|
|
#region 用户管理close事件
|
private void SubContent_closeEvent(object sender, EventArgs e)
|
{
|
UIElement element = sender as UIElement;
|
gridContent.Children.Remove(element);
|
}
|
#endregion
|
|
#region 保存方法 输入方法名Dialog取消事件
|
private void SubWnd_closeEvent(object sender, EventArgs e)
|
{
|
Window wnd = Application.Current.MainWindow;
|
Grid grid = Utilities.FindVisualChild<Grid>(wnd);
|
|
UIElement element = sender as UIElement;
|
grid.Children.Remove(element);
|
}
|
#endregion
|
|
#region 主菜单——打开界面按钮事件
|
public bool isOpenning = false;//是否正打开实验
|
private void btnOpen_Click(object sender, RoutedEventArgs e)
|
{
|
methodExes.Clear();
|
methodExesForGroup.Clear();
|
try
|
{
|
if (btnLiquidManager.IsChecked == true)
|
{
|
// 打开文件加载液体配置
|
}
|
else if (btnConsumableManager.IsChecked == true)
|
{
|
// 打开文件加载耗材配置
|
}
|
else if (btnTestDesign.IsChecked == true)
|
{
|
#region 打开界面
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
openFileDialog.Title = "选择一个文件";
|
openFileDialog.Multiselect = false;
|
openFileDialog.Filter = @"method文件|*.xmed|所有文件|*.*";
|
if (openFileDialog.ShowDialog(this) == true)
|
{
|
isOpenning = true;
|
rootGridTitle.RowDefinitions[1].Height = new GridLength(3);
|
//pBarProgress.IsIndeterminate = true;
|
//pBarProgress.Value = 0;
|
//this.Cursor = Cursors.Wait;
|
Mouse.OverrideCursor = Cursors.Wait;
|
|
#region 清空设计区
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (testDesign != null)
|
{
|
foreach (Canvas canvas in testDesign.gridTable.Children)
|
{
|
if (canvas != null)
|
{
|
for (int i = canvas.Children.Count - 1; i > 0; i--)
|
{
|
string objectName = canvas.Children[i].GetType().Name;
|
if (objectName == "ControlLabware")
|
{
|
if ((canvas.Children[i] as ControlLabware).IsTrash)
|
{
|
|
}
|
else
|
{
|
//if(Shared.SoftwareInformation.software_device_number.Equals(DeviceCategory.DeviceHXELEC))
|
//{
|
// if(canvas.Name.Equals("P1"))
|
// {
|
// continue;
|
// }
|
//}
|
canvas.Children.RemoveAt(i);
|
}
|
}
|
else
|
{
|
canvas.Children.RemoveAt(i);
|
}
|
}
|
|
canvas.Tag = null;
|
}
|
}
|
ObservableCollection<Method> methods = MethodDB.GetMethodFromdb(Shared.SoftwareInformation.software_device_number);
|
testDesign.InitializeWorkFlow(methods);
|
}
|
else
|
{
|
testDesign = new TestDesign();
|
}
|
gridContent.Children.Add(testDesign);
|
|
if (consumableManagement != null)
|
{
|
consumableManagement.observers.Clear();
|
}
|
#endregion
|
|
CurWorkFlowName = string.Empty;
|
CurWorkFlowName = openFileDialog.FileName;
|
tbCaption.Text = Properties.Resources.strXHandler + " - " + CurWorkFlowName;
|
|
#region 绑定数据
|
XmlHelper xmlHelper = new XmlHelper();
|
xmlHelper.xmlDoc.Load(CurWorkFlowName);
|
//UpdateProgress(pBarProgress, 1);
|
|
// 绑定台面
|
BindSetLatticesDataOnUI(xmlHelper.xmlDoc);
|
//UpdateProgress(pBarProgress, 2);
|
|
//Task.Run(() =>
|
//{
|
// 绑定命令集
|
BindWorkFlowIntoTree(xmlHelper.xmlDoc);
|
|
//});
|
// 流程运行前备份env数据
|
//xmlEnvBak = xmlHelper.xmlDoc.SelectSingleNode("root/env").Clone();
|
#endregion
|
}
|
#endregion
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
finally
|
{
|
//this.Cursor = Cursors.Arrow;
|
|
//rootGridTitle.RowDefinitions[1].Height = new GridLength(0);
|
}
|
}
|
#endregion
|
|
#region 更新进度条进度值
|
public void UpdateProgress(int newValue)
|
{
|
// 更新UI元素时需要确保是在UI线程中执行
|
this.Dispatcher.Invoke(() =>
|
{
|
pBarProgress.Value = newValue;
|
});
|
}
|
#endregion
|
|
#region 在实验列表功能中,选中一个方法打开
|
public void OpenAndLoadMethod(string fileContent)
|
{
|
try
|
{
|
//#region 清空设计区
|
//if (gridContent.Children.Count > 0)
|
// gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
//testDesign = new TestDesign();
|
//gridContent.Children.Add(testDesign);
|
//#endregion
|
#region 清空设计区
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
if (testDesign != null)
|
{
|
foreach (Canvas canvas in testDesign.gridTable.Children)
|
{
|
if (canvas != null)
|
{
|
for (int i = canvas.Children.Count - 1; i > 0; i--)
|
{
|
string objectName = canvas.Children[i].GetType().Name;
|
if (objectName == "ControlLabware")
|
{
|
if ((canvas.Children[i] as ControlLabware).IsTrash)
|
{
|
|
}
|
else
|
{
|
canvas.Children.RemoveAt(i);
|
}
|
}
|
else
|
{
|
canvas.Children.RemoveAt(i);
|
}
|
}
|
|
canvas.Tag = null;
|
}
|
}
|
ObservableCollection<Method> methods = MethodDB.GetMethodFromdb(Shared.SoftwareInformation.software_device_number);
|
testDesign.InitializeWorkFlow(methods);
|
}
|
else
|
{
|
testDesign = new TestDesign();
|
}
|
gridContent.Children.Add(testDesign);
|
|
if (consumableManagement != null)
|
{
|
consumableManagement.observers.Clear();
|
}
|
#endregion
|
|
XmlHelper xmlHelper = new XmlHelper();
|
xmlHelper.xmlDoc.LoadXml(fileContent);
|
|
//绑定台面
|
BindSetLatticesDataOnUI(xmlHelper.xmlDoc);
|
|
//绑定命令集
|
BindWorkFlowIntoTree(xmlHelper.xmlDoc);
|
}
|
catch (Exception ex)
|
{
|
|
}
|
}
|
#endregion
|
|
#region 绑定台面
|
public void BindSetLatticesDataOnUI(XmlDocument xmlDocument)
|
{
|
XmlNodeList xmlNodeList = xmlDocument.SelectNodes("root/env/platform");
|
object sender = new object();
|
RoutedEventArgs e = new RoutedEventArgs();
|
foreach (XmlNode xmlNode in xmlNodeList)
|
{
|
// 获取板子信息,克隆数据添加到板位上
|
//Labware labware = LabwareDB.GetLabware();
|
if (xmlNode.SelectNodes("labware") == null)
|
{
|
continue;
|
}
|
|
|
BindLabwareIntoLattice(xmlNode);
|
}
|
}
|
|
public void BindLabwareIntoLattice(XmlNode xmlNode)
|
{
|
if (testDesign == null)
|
return;
|
|
for (int i = 0; i < testDesign.gridTable.Children.Count; i++)
|
{
|
//一个存放Canvas的DataContext的集合对象
|
Stack<LabwareEx> labwareExes = new Stack<LabwareEx>();
|
Canvas canvas = ((Canvas)testDesign.gridTable.Children[i]);
|
int lapid = 0;
|
TabletopTemplate tabletopTemplate = TabletopTemplateDB.GetCurrentAppTabletopTemplateCollectionFromdb(); //增加台面模板判断
|
if (tabletopTemplate == null)
|
{
|
lapid = ControlCom.GetLatticeId(Convert.ToInt32(xmlNode.SelectSingleNode("lattice_id").InnerText));
|
}
|
else
|
{
|
string latticeNumber = "P" + xmlNode.SelectSingleNode("lattice_id").InnerText;
|
lapid = Convert.ToInt32(LatticeDB.GetLatticeDataByLatticeNumAndTempIdFromdb(latticeNumber, Convert.ToInt32(Shared.DeviceArmList.FirstOrDefault(x => x.arm_type.Equals(1)).device_arm_id), Shared.SoftwareInformation.software_device_number, tabletopTemplate.tabletopid).lattice_id);
|
}
|
string latticeNum = LatticeDB.GetLatticeDataByIdFromdb(lapid.ToString()).lattice_num;
|
|
int isTrash = (int)LatticeDB.GetLatticeDataByIdFromdb(lapid.ToString()).is_trash;
|
|
if (isTrash == 1)
|
{
|
continue;
|
}
|
|
if (((canvas.Children[0] as Border).Child as TextBlock).Text == latticeNum)
|
{
|
XmlNodeList labwareXmlNodeList = xmlNode.SelectNodes("labware");
|
for (int j = 0; j < labwareXmlNodeList.Count; j++)
|
{
|
string labwareId = labwareXmlNodeList[j].SelectSingleNode("labware_id").InnerText;
|
Labware labware = LabwareDB.GetLabware(labwareId);
|
if (labware != null)
|
{
|
if (labware.labware_type_id.Equals("4"))
|
{
|
labware.labwareWellInfoList = DataRWDAL.LabwareDB.GetSpecialLabwareWellInfo(labware.labware_id);
|
}
|
}
|
labware.labware_sname = labwareXmlNodeList[j].SelectSingleNode("labware_sname").InnerText;
|
if (labwareXmlNodeList[j].SelectSingleNode("labware_barcode") != null)
|
{
|
labware.labware_barcode = labwareXmlNodeList[j].SelectSingleNode("labware_barcode").InnerText;
|
}
|
|
if (string.IsNullOrEmpty(labware.labware_id))
|
{
|
continue;
|
}
|
|
Labware lbe = labware;
|
ControlLabware control = new ControlLabware();
|
//if (isTrash == 1)
|
//{
|
// ControlLabware cl = new ControlLabware()
|
// {
|
// IsTrash = true,
|
// LabwareName = Properties.Resources.strTrash.ToString()
|
// //LabwareName = string.Format("垃{0}圾{0}桶", Environment.NewLine)
|
// };
|
// LabwareEx lb = new LabwareEx();
|
// lb.labware_name = Properties.Resources.strTrash;
|
// //lb.labware_name = string.Format("垃{0}圾{0}桶", Environment.NewLine);
|
|
// lb.row = Grid.GetRow(canvas);
|
// lb.col = Grid.GetColumn(canvas);
|
// canvas.DataContext = lb;
|
// canvas.Children.Add(cl);
|
//}
|
//else
|
//{
|
control.LeftSideColor = ComUtility.RGBToColor(lbe.labware_color_lside); // 侧面
|
control.FrontColor = ComUtility.RGBToColor(lbe.labware_color_front); // 前斜面
|
control.TopColor = ComUtility.RGBToColor(lbe.labware_color_top); // 正上
|
control.BorderColor = ComUtility.RGBToColor(lbe.labware_color_line); // 边线
|
control.AllowDrop = true;
|
|
if (lbe.labware_type_id == EnumManagement.GetEnumValue(ConsumableTypeEnum.CircularDish).ToString()) // 圆形皿
|
{
|
control.LabwareWidth = canvas.ActualWidth;
|
control.LabwareHeight = canvas.ActualHeight;// canvas.ActualWidth*50/90;
|
//LabwareDeep = 8,
|
control.Rows = (int)lbe.number_row;
|
control.Columns = (int)lbe.number_column;
|
control.WellColor = Colors.White;
|
control.IsFill = true;
|
control.Label = latticeNum;
|
control.LabwareType = Convert.ToInt16(lbe.labware_type_id);
|
control.LabwareName = lbe.labware_name;
|
control.Barcode = lbe.labware_barcode;
|
control.Width = canvas.ActualWidth;
|
control.Height = canvas.ActualHeight + 4;
|
}
|
else
|
{
|
if (tabletopTemplate == null)
|
{
|
control.LabwareWidth = 126.46153846153845;//canvas.ActualWidth;
|
control.LabwareHeight = 48;//canvas.ActualHeight;
|
}
|
else
|
{
|
control.LabwareWidth = canvas.Width;
|
control.LabwareHeight = canvas.Height;
|
}
|
control.Rows = (int)lbe.number_row;
|
control.Columns = (int)lbe.number_column;
|
control.WellColor = Colors.White;
|
control.IsFill = true;
|
if (!string.IsNullOrEmpty(lbe.labware_sname))
|
{
|
control.Label = lbe.labware_sname;
|
}
|
else
|
{
|
control.Label = latticeNum;
|
}
|
|
if (!string.IsNullOrEmpty(lbe.labware_barcode))
|
{
|
control.Barcode = lbe.labware_barcode;
|
}
|
else
|
{
|
control.Barcode = "";
|
}
|
|
control.LabwareType = Convert.ToInt16(lbe.labware_type_id);
|
control.LabwareName = lbe.labware_name;
|
|
if (lbe.labware_type_id == EnumManagement.GetEnumValue(ConsumableTypeEnum.Tube).ToString()) //管架
|
{
|
control.LabwareRealLength = lbe.labware_length;
|
control.LabwareRealWidth = lbe.labware_width;
|
control.labwareWellInfoList = lbe.labwareWellInfoList;
|
}
|
if (lbe.labware_type_id == EnumManagement.GetEnumValue(ConsumableTypeEnum.Electrophoto).ToString()) //电泳板位
|
{
|
control.LabwareRealLength = lbe.labware_length;
|
control.LabwareRealWidth = lbe.labware_width;
|
control.labwareWellInfoList = lbe.labwareWellInfoList;
|
}
|
}
|
|
control.ValidWells =
|
labwareXmlNodeList[j].SelectSingleNode("residueValidWells").InnerText =
|
labwareXmlNodeList[j].SelectSingleNode("allValidWells").InnerText;
|
|
Canvas.SetLeft(control, 0);
|
if (lbe.labware_type_id == EnumManagement.GetEnumValue(ConsumableTypeEnum.Electrophoto).ToString()) //电泳切胶槽
|
{
|
Canvas.SetTop(control, 0);
|
}
|
else
|
{
|
Canvas.SetBottom(control, 0);
|
}
|
|
|
LabwareEx lb = new LabwareEx(lbe);
|
|
lb.row = Grid.GetRow(canvas);
|
lb.col = Grid.GetColumn(canvas);
|
lb.label = lbe.labware_sname;
|
lb.position = canvas.Name;
|
lb.validWells = control.ValidWells;
|
|
canvas.DataContext = lb;
|
if (canvas.Tag != null)
|
{
|
if (canvas.Tag.GetType().Name == "TabletopRelLattice")
|
{
|
|
}
|
else
|
{
|
labwareExes = (Stack<LabwareEx>)canvas.Tag;
|
}
|
}
|
if (labwareExes != null)
|
{
|
}
|
else
|
{
|
labwareExes = new Stack<LabwareEx>();
|
}
|
labwareExes.Push(lb);
|
canvas.Tag = labwareExes;
|
//根据重叠的层级,设置margin,用的是下层的耗材数据计算
|
double leftMargin = 0;//离左侧距离
|
double bottomMargin = 0;//离底部距离
|
for (int k = 0; k < canvas.Children.Count; k++)
|
{
|
ControlLabware a = canvas.Children[k] as ControlLabware;
|
if (a != null)
|
{
|
leftMargin += a.LabwareDeep;
|
bottomMargin += a.LabwareDeep;
|
}
|
}
|
|
control.Margin = new Thickness(leftMargin, 0, 0, bottomMargin);
|
canvas.Children.Add(control);
|
control.SetValidWells(control.ValidWells);
|
|
//如果是第二及其以上耗材,要隐藏标签
|
if (labwareExes.Count > 1)
|
{
|
control.Label = "";
|
}
|
else
|
{
|
|
}
|
//}
|
}
|
}
|
}
|
}
|
#endregion
|
|
List<MethodEx> methodExes = new List<MethodEx>();
|
MethodEx sourceItem = null;
|
List<MethodEx> methodExesForGroup = new List<MethodEx>();
|
|
#region 往Tree上绑定命令集
|
/// <summary>
|
/// 往Tree上绑定命令集
|
/// </summary>
|
/// <param name="xmlDocument"></param>
|
public void BindWorkFlowIntoTree(XmlDocument xmlDocument)
|
{
|
//this.Dispatcher.Invoke(() =>
|
//{
|
Task.Run(() =>
|
{
|
try
|
{
|
//方法
|
XmlNodeList xmlNodeMethodList = xmlDocument.SelectNodes("root/method");
|
MethodListBll methodListBll = new MethodListBll();
|
this.Dispatcher.Invoke(() =>
|
{
|
|
|
MethodEx methodExLast = testDesign.rootMethod.Children[testDesign.rootMethod.Children.Count - 1];
|
testDesign.rootMethod.Children.RemoveAt(testDesign.rootMethod.Children.Count - 1);
|
|
//处理第一个节点
|
MethodStart methodStart = new MethodStart();
|
StartBll startBll = new StartBll();
|
methodStart = startBll.GenerateMethodStartDataByXmlNode(xmlNodeMethodList[0]);
|
MethodEx mi = testDesign.rootMethod.Children[0];
|
mi.tag = methodStart;
|
if (mi.control != null)
|
{
|
(mi.control as StartProperty).methodStart = methodStart;
|
}
|
|
|
//pBarProgress.IsIndeterminate = false;
|
pBarProgress.Maximum = xmlNodeMethodList.Count;// + 2;
|
});
|
|
//开始和结尾不要,其他的方法循环绑定数据
|
for (int i = 1; i < xmlNodeMethodList.Count; i++)
|
{
|
this.Dispatcher.Invoke(() =>
|
{
|
string MethodName = xmlNodeMethodList[i].SelectSingleNode("label").InnerText;
|
|
int iNum = methodListBll.getNumByMethodName(MethodName);
|
|
MethodEx methodEx = null;
|
switch (iNum)
|
{
|
case (int)MethodNameEnum.start:
|
//m = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
//MethodStart methodStart = new MethodStart();
|
//StartBll startBll = new StartBll();
|
//methodStart = startBll.GenerateMethodStartDataByXmlNode(xmlNodeMethodList[i]);
|
//m.tag= methodStart;
|
//testDesign.rootMethod.Children.Add(m);
|
break;
|
|
case (int)MethodNameEnum.loadtips:
|
#region 安装吸头
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodLoadTips methodLoadTips = new MethodLoadTips();
|
LoadTipsBll loadTipsBll = new LoadTipsBll();
|
methodLoadTips = loadTipsBll.GenerateMethodLoadTipsDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodLoadTips;
|
if (methodLoadTips != null)
|
{
|
methodEx.method_Tipcontent = string.Format("安装{0}", methodLoadTips.labwaretipText);
|
}
|
methodEx.isEnabled = methodLoadTips.status == "enable";
|
testDesign.Method_LoadTips(methodEx);
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.unloadtips:
|
#region 卸载吸头
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodUnloadTips methodUnloadTips = new MethodUnloadTips();
|
UnloadTipsBll unloadTipsBll = new UnloadTipsBll();
|
methodUnloadTips = unloadTipsBll.GenerateMethodUnloadTipsDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodUnloadTips;
|
methodEx.isEnabled = methodUnloadTips.status == "enable";
|
testDesign.Method_UnloadTips(methodEx);
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.end:
|
#region 结束
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodEnd methodEnd = new MethodEnd();
|
EndBll endBll = new EndBll();
|
methodEnd = endBll.GenerateMethodEndDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodEnd;
|
methodEx.isEnabled = methodEnd.status == "enable";
|
methodEx.canDrop = false;
|
methodEx.Moveable = false;
|
testDesign.Method_End(methodEx);
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.loop:
|
#region 开始循环
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodLoop methodLoop = new MethodLoop();
|
LoopBll loopBll = new LoopBll();
|
methodLoop = loopBll.GenerateMethodLoopDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodLoop;
|
if (methodLoop != null)
|
{
|
methodEx.method_Tipcontent = string.Format("从{0}到{1},递增{2}", methodLoop.variablesValue.ToString(), methodLoop.variableeValue.ToString(), methodLoop.incrementValue.ToString());
|
}
|
methodEx.isEnabled = methodLoop.status == "enable";
|
testDesign.Method_Loop(methodEx);
|
//testDesign.rootMethod.Children.Add(m);
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.endloop:
|
#region 结束循环
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
methodEx.Children[methodEx.Children.Count - 1].isEnabled = new LoopBll().GenerateMethodLoopDataByXmlNode(xmlNodeMethodList[i]).status == "enable";
|
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
|
bool isAllNull = true;
|
//循环向前找,找到最后一个不为null的,设置为sourceItem
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = methodExes[k];
|
isAllNull = false;
|
break;
|
}
|
}
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
methodExes.RemoveAt(methodExes.Count - 1);
|
}
|
else
|
{
|
bool isAllNull = true;
|
int counAllNull = 0;//计算不为Null的个数
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
counAllNull++;
|
}
|
}
|
|
//循环向前找,找到最后一个不为null的,设置为null
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = null;
|
methodExes[k] = null;
|
isAllNull = false;
|
break;
|
}
|
}
|
|
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
else
|
{
|
if (counAllNull == 1)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
}
|
}
|
else
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.aspirate:
|
#region 吸液
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodAspirate methodAspirate = new MethodAspirate();
|
AspirateBll aspirateBll = new AspirateBll();
|
methodAspirate = aspirateBll.GenerateMethodAspirateDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodAspirate;
|
if (methodAspirate != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0};{1}", methodAspirate.positionText, methodAspirate.wellvolume);
|
}
|
methodEx.isEnabled = methodAspirate.status == "enable";
|
testDesign.Method_Aspirate(methodEx);
|
//testDesign.treeviewWorkflow.SelectedItem = m;
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.dispense:
|
#region 排液
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodDispense methodDispense = new MethodDispense();
|
DispenseBll dispenseBll = new DispenseBll();
|
methodDispense = dispenseBll.GenerateMethodDispenseDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodDispense;
|
if (methodDispense != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0};{1}", methodDispense.positionText, methodDispense.wellvolume);
|
}
|
methodEx.isEnabled = methodDispense.status == "enable";
|
testDesign.Method_Dispense(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.mixing:
|
#region 混合
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodMixing methodMixing = new MethodMixing();
|
MixingBll mixingBll = new MixingBll();
|
methodMixing = mixingBll.GenerateMethodMixingDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodMixing;
|
if (methodMixing != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0};{1}", methodMixing.positionText, methodMixing.mixcount);
|
}
|
methodEx.isEnabled = methodMixing.status == "enable";
|
testDesign.Method_Mix(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.transferfile:
|
#region 文件
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodTransferFile methodTransferFile = new MethodTransferFile();
|
TransferFileBll transferFileBll = new TransferFileBll();
|
methodTransferFile = transferFileBll.GenerateMethodTransferFileDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodTransferFile;
|
methodEx.isEnabled = methodTransferFile.status == "enable";
|
testDesign.Method_File(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.griptransport:
|
#region 抓板转移
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodGripTransport methodGripTransport = new MethodGripTransport();
|
GripTransportBll gripTransportBll = new GripTransportBll();
|
methodGripTransport = gripTransportBll.GenerateMethodGripTransport(xmlNodeMethodList[i]);
|
methodEx.tag = methodGripTransport;
|
|
if (methodGripTransport != null)
|
{
|
methodEx.method_Tipcontent = string.Format("从{0}到{1}", methodGripTransport.srcPositionText, methodGripTransport.desPositionText);
|
}
|
methodEx.isEnabled = methodGripTransport.status == "enable";
|
|
testDesign.Method_GripTransport(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.gripmove:
|
#region 移动夹爪
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodGripMove methodGripMove = new MethodGripMove();
|
GripMoveBll gripMoveBll = new GripMoveBll();
|
methodGripMove = gripMoveBll.GenerateMethodGripMove(xmlNodeMethodList[i]);
|
methodEx.tag = methodGripMove;
|
methodEx.isEnabled = methodGripMove.status == "enable";
|
testDesign.Method_GripMove(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.holdingLabware:
|
#region 夹爪保持开始
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodHoldingLabware methodHoldingLabware = holdingLabwareBll.GenerateMethodBeginHoldingLabware(xmlNodeMethodList[i]);
|
methodEx.tag = methodHoldingLabware;
|
methodEx.isEnabled = methodHoldingLabware.status == "enable";
|
methodEx.method_Tipcontent = string.Format("从{0}抓板", methodHoldingLabware.srcPositionText);
|
|
testDesign.Method_HoldingLabware(methodEx);
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.endHoldingLabware:
|
#region 夹爪保持结束
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodHoldingLabware endMethodHoldingLabware = holdingLabwareBll.GenerateMethodEndHoldingLabware(xmlNodeMethodList[i]);
|
methodEx.Children[methodEx.Children.Count - 1].tag = endMethodHoldingLabware;
|
methodEx.Children[methodEx.Children.Count - 1].isEnabled = endMethodHoldingLabware.status == "enable";
|
methodEx.Children[methodEx.Children.Count - 1].method_Tipcontent = string.Format("放板到{0}", endMethodHoldingLabware.desPositionText);
|
|
testDesign.Method_HoldingLabware(methodEx.Children[methodEx.Children.Count - 1]);
|
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
|
bool isAllNull = true;
|
//循环向前找,找到最后一个不为null的,sourceItem
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = methodExes[k];
|
isAllNull = false;
|
break;
|
}
|
}
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
methodExes.RemoveAt(methodExes.Count - 1);
|
}
|
else
|
{
|
bool isAllNull = true;
|
int counAllNull = 0;//计算不为Null的个数
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
counAllNull++;
|
}
|
}
|
|
//循环向前找,找到最后一个不为null的,设置为null
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = null;
|
methodExes[k] = null;
|
isAllNull = false;
|
break;
|
}
|
}
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
else
|
{
|
if (counAllNull == 1)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
}
|
}
|
else
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.home:
|
#region 复位
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodHome methodHome = new MethodHome();
|
HomeBll homeBll = new HomeBll();
|
methodHome = homeBll.GenerateMethodHome(xmlNodeMethodList[i]);
|
methodEx.tag = methodHome;
|
methodEx.isEnabled = methodHome.status == "enable";
|
testDesign.Method_Reset(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.pause:
|
#region 暂停
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodPauseMove methodPauseMove = new MethodPauseMove();
|
PauseMoveBll pauseMoveBll = new PauseMoveBll();
|
methodPauseMove = pauseMoveBll.GenerateMethodPauseMove(xmlNodeMethodList[i]);
|
methodEx.tag = methodPauseMove;
|
if (methodPauseMove != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0};{1}", methodPauseMove.pauseTime, methodPauseMove.pauseTipInfo);
|
}
|
methodEx.isEnabled = methodPauseMove.status == "enable";
|
testDesign.Method_Pause(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.remark:
|
#region 备注
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodRemark methodRemark = new MethodRemark();
|
CommentBll commentBll = new CommentBll();
|
methodRemark = commentBll.GenerateMethodRemark(xmlNodeMethodList[i]);
|
methodEx.tag = methodRemark;
|
if (methodRemark != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0}", methodRemark.title.ToString());
|
}
|
methodEx.isEnabled = methodRemark.status == "enable";
|
testDesign.Method_Comment(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.dataimport:
|
#region 数据导入
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodDataImport methodDataImport = new MethodDataImport();
|
DataImportBll dataImportBll = new DataImportBll();
|
methodDataImport = dataImportBll.GenerateMethodDataImportDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodDataImport;
|
methodEx.isEnabled = methodDataImport.status == "enable";
|
testDesign.Method_DataImport(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.dataexport:
|
#region 数据导出
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodDataExport methodDataExport = new MethodDataExport();
|
DataExportBll dataExportBll = new DataExportBll();
|
methodDataExport = dataExportBll.GenerateMethodDataExport(xmlNodeMethodList[i]);
|
methodEx.tag = methodDataExport;
|
methodEx.isEnabled = methodDataExport.status == "enable";
|
testDesign.Method_DataExport(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.group:
|
#region 组合
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodCombination methodCombination = new MethodCombination();
|
GroupBll groupBll = new GroupBll();
|
methodCombination = groupBll.GenerateMethodGroup(xmlNodeMethodList[i]);
|
methodEx.tag = methodCombination;
|
methodEx.isEnabled = methodCombination.status == "enable";
|
testDesign.Method_Group(methodEx);
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.endgroup:
|
#region 结束组合
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
methodEx.Children[methodEx.Children.Count - 1].isEnabled = new GroupBll().GenerateMethodGroup(xmlNodeMethodList[i]).status == "enable";
|
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
|
bool isAllNull = true;
|
//循环向前找,找到最后一个不为null的,sourceItem
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = methodExes[k];
|
isAllNull = false;
|
break;
|
}
|
}
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
methodExes.RemoveAt(methodExes.Count - 1);
|
}
|
else
|
{
|
bool isAllNull = true;
|
int counAllNull = 0;//计算不为Null的个数
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
counAllNull++;
|
}
|
}
|
|
//循环向前找,找到最后一个不为null的,设置为null
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = null;
|
methodExes[k] = null;
|
isAllNull = false;
|
break;
|
}
|
}
|
|
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
else
|
{
|
if (counAllNull == 1)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
}
|
}
|
else
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.takephoto:
|
#region 拍照
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
if (Shared.SoftwareInformation.software_device_number.Equals(DeviceCategory.DeviceHXELEC))
|
{
|
MethodTakePhotoForElectro methodTakePhotoForElectro = new MethodTakePhotoForElectro();
|
TakePhotoBll takePhotoBll = new TakePhotoBll();
|
methodTakePhotoForElectro = takePhotoBll.GenerateMethodTakePhotoForElectroDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodTakePhotoForElectro;
|
methodEx.isEnabled = methodTakePhotoForElectro.status == "enable";
|
testDesign.Method_Capture(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
else
|
{
|
MethodTakePhoto methodTakePhoto = new MethodTakePhoto();
|
TakePhotoBll takePhotoBll = new TakePhotoBll();
|
methodTakePhoto = takePhotoBll.GenerateMethodTakePhotoDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodTakePhoto;
|
methodEx.isEnabled = methodTakePhoto.status == "enable";
|
testDesign.Method_Capture(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.choice:
|
#region 挑选
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodChoice methodChoice = choiceBll.GenerateMethodChoiceDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodChoice;
|
methodEx.isEnabled = methodChoice.status == "enable";
|
testDesign.Method_Pick(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.coating:
|
#region 涂布
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodCoating methodCoating = coatingBll.GenerateMethodCoatingDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodCoating;
|
methodEx.isEnabled = methodCoating.status == "enable";
|
testDesign.Method_Coating(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.coatingfile:
|
#region 涂布文件
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodCoatingFile methodCoatingFile = new MethodCoatingFile();
|
CoatingFileBll coatingFileBll = new CoatingFileBll();
|
methodCoatingFile = coatingFileBll.GenerateMethodCoatingFileDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodCoatingFile;
|
methodEx.isEnabled = methodCoatingFile.status == "enable";
|
testDesign.Method_FileCoating(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.coatingReport:
|
#region 涂布报告
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodCoatingReport methodCoatingReport = new MethodCoatingReport();
|
CoatingReportBll coatingReportBll = new CoatingReportBll();
|
methodCoatingReport = coatingReportBll.GenerateMethodDataExport(xmlNodeMethodList[i]);
|
methodEx.tag = methodCoatingReport;
|
methodEx.isEnabled = methodCoatingReport.status == "enable";
|
testDesign.Method_CoatingFileExport(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.ultrasonic:
|
#region 超声探测
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodUltrasonic methodUltrasonic = new MethodUltrasonic();
|
UltrasonicBll ultrasonicBll = new UltrasonicBll();
|
methodUltrasonic = ultrasonicBll.GenerateMethodUltrasonicDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodUltrasonic;
|
methodEx.isEnabled = methodUltrasonic.status == "enable";
|
testDesign.Method_Ultrasonic(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.choiceTransfer:
|
#region 挑选转板
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodChoiceAndTransfer methodChoiceTransfer = choiceBll.GenerateMethodChoiceAndTransferDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodChoiceTransfer;
|
methodEx.isEnabled = methodChoiceTransfer.status == "enable";
|
testDesign.Method_PickAndTransfer(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.coatingTransfer:
|
#region 涂布转板
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodCoatingAndTransfer methodCoatingTransfer = coatingBll.GenerateMethodCoatingAndTransferDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodCoatingTransfer;
|
methodEx.isEnabled = methodCoatingTransfer.status == "enable";
|
testDesign.Method_CoatingAndTransfer(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
|
case (int)MethodNameEnum.dilution:
|
#region 梯度稀释
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodDilution methodDilution = new MethodDilution();
|
DilutionBll dilutionBll = new DilutionBll();
|
methodDilution = dilutionBll.GenerateMethodDilutionDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodDilution;
|
methodEx.isEnabled = methodDilution.status == "enable";
|
testDesign.Method_Dilution(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.setVariable:
|
#region 设置变量
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodSetVariable methodSetVariable = new MethodSetVariable();
|
SetVariableBll setVariableBll = new SetVariableBll();
|
methodSetVariable = setVariableBll.GenerateMethodSetVariable(xmlNodeMethodList[i]);
|
methodEx.tag = methodSetVariable;
|
if (methodSetVariable != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0}={1}", methodSetVariable.variablename.ToString(), methodSetVariable.variablevalue.ToString());
|
}
|
methodEx.isEnabled = methodSetVariable.status == "enable";
|
testDesign.Method_SetVariable(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.VariableImport:
|
#region 文件导入变量
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodVariableImport methodVariableImport = new MethodVariableImport();
|
VariableImportBll variableImportBll = new VariableImportBll();
|
methodVariableImport = variableImportBll.GenerateMethodVariableImportDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodVariableImport;
|
methodEx.isEnabled = methodVariableImport.status == "enable";
|
testDesign.Method_VariableImport(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.ifStart:
|
#region 开始if
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
MethodIfElse methodIfElse = new MethodIfElse();
|
IfElseBll ifElseBll = new IfElseBll();
|
methodIfElse = ifElseBll.GenerateMethodIfElseDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodIfElse;
|
if (methodIfElse != null)
|
{
|
string logicSymbol = string.Empty;
|
if (methodIfElse.logicCondition == LogicMark.Above)
|
{
|
logicSymbol = ">";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.Below)
|
{
|
logicSymbol = "<";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.Equal)
|
{
|
logicSymbol = "=";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.Unequal)
|
{
|
logicSymbol = "!=";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.AboveEqual)
|
{
|
logicSymbol = ">=";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.BelowEqual)
|
{
|
logicSymbol = "<=";
|
}
|
methodEx.method_Tipcontent = string.Format("{0}{1}{2}", methodIfElse.variableName, logicSymbol, methodIfElse.variableValue);
|
}
|
methodEx.isEnabled = methodIfElse.status == "enable";
|
testDesign.Method_IfElse(methodEx);
|
#endregion
|
break;
|
case (int)MethodNameEnum.ifEnd:
|
#region 结束if
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
methodEx.Children[methodEx.Children.Count - 1].isEnabled = true;// new IfElseBll().GenerateMethodIfElseDataByXmlNode(xmlNodeMethodList[i]).status == "enable";
|
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
|
bool isAllNull = true;
|
//循环向前找,找到最后一个不为null的,设置为sourceItem
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = methodExes[k];
|
isAllNull = false;
|
break;
|
}
|
}
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
methodExes.RemoveAt(methodExes.Count - 1);
|
}
|
else
|
{
|
bool isAllNull = true;
|
int counAllNull = 0;//计算不为Null的个数
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
counAllNull++;
|
}
|
}
|
|
//循环向前找,找到最后一个不为null的,设置为null
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = null;
|
methodExes[k] = null;
|
isAllNull = false;
|
break;
|
}
|
}
|
|
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
else
|
{
|
if (counAllNull == 1)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
}
|
}
|
else
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.elseStart:
|
#region 开始if
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
methodIfElse = new MethodIfElse();
|
ifElseBll = new IfElseBll();
|
methodIfElse = ifElseBll.GenerateMethodIfElseDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodIfElse;
|
if (methodIfElse != null)
|
{
|
string logicSymbol = string.Empty;
|
if (methodIfElse.logicCondition == LogicMark.Above)
|
{
|
logicSymbol = ">";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.Below)
|
{
|
logicSymbol = "<";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.Equal)
|
{
|
logicSymbol = "=";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.Unequal)
|
{
|
logicSymbol = "!=";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.AboveEqual)
|
{
|
logicSymbol = ">=";
|
}
|
else if (methodIfElse.logicCondition == LogicMark.BelowEqual)
|
{
|
logicSymbol = "<=";
|
}
|
methodEx.method_Tipcontent = string.Format("{0}{1}{2}", methodIfElse.variableName, logicSymbol, methodIfElse.variableValue);
|
}
|
methodEx.isEnabled = methodIfElse.status == "enable";
|
testDesign.Method_IfElse(methodEx);
|
#endregion
|
break;
|
case (int)MethodNameEnum.elseEnd:
|
#region 结束if
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
methodEx.Children[methodEx.Children.Count - 1].isEnabled = true;//new IfElseBll().GenerateMethodIfElseDataByXmlNode(xmlNodeMethodList[i]).status == "enable";
|
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
|
bool isAllNull = true;
|
//循环向前找,找到最后一个不为null的,设置为sourceItem
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = methodExes[k];
|
isAllNull = false;
|
break;
|
}
|
}
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
methodExes.RemoveAt(methodExes.Count - 1);
|
}
|
else
|
{
|
bool isAllNull = true;
|
int counAllNull = 0;//计算不为Null的个数
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
counAllNull++;
|
}
|
}
|
|
//循环向前找,找到最后一个不为null的,设置为null
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = null;
|
methodExes[k] = null;
|
isAllNull = false;
|
break;
|
}
|
}
|
|
|
|
//如果向前找没有一个不为null的,则添加到tree;否则不添加
|
if (isAllNull)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
else
|
{
|
if (counAllNull == 1)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
}
|
}
|
else
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
sourceItem = null;
|
methodExes[methodExes.Count - 1] = null;
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.timerSet:
|
#region 计时器
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodTimer methodTimer = new MethodTimer();
|
TimerBll timerBll = new TimerBll();
|
methodTimer = timerBll.GenerateMethodTimer(xmlNodeMethodList[i]);
|
methodEx.tag = methodTimer;
|
if (methodTimer != null)
|
{
|
methodEx.method_Tipcontent = string.Format("{0}s", methodTimer.duringTime.ToString());
|
}
|
methodEx.isEnabled = methodTimer.status == "enable";
|
testDesign.Method_Timer(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.waitFor:
|
#region 等待
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodWaitFor methodWaitFor = new MethodWaitFor();
|
WaitForBll waitForBll = new WaitForBll();
|
methodWaitFor = waitForBll.GenerateMethodTimer(xmlNodeMethodList[i]);
|
methodEx.tag = methodWaitFor;
|
methodEx.isEnabled = methodWaitFor.status == "enable";
|
testDesign.Method_WaitFor(methodEx, null);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.pumpDispense:
|
#region 泵排液
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodPumpDispese methodPumpDispese = new MethodPumpDispese();
|
PumpDispenseBll pumpDispenseBll = new PumpDispenseBll();
|
methodPumpDispese = pumpDispenseBll.GenerateMethodPumpDispenseDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodPumpDispese;
|
methodEx.isEnabled = methodPumpDispese.status == "enable";
|
testDesign.Method_PumpDispense(methodEx);
|
//testDesign.treeviewWorkflow.SelectedItem = m;
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.shaker:
|
#region 振荡
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodShake methodShake = new MethodShake();
|
ShakerBll shakerBll = new ShakerBll();
|
methodShake = shakerBll.GenerateMethodShakeDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodShake;
|
methodEx.isEnabled = methodShake.status == "enable";
|
testDesign.Method_Shake(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.switchLid:
|
#region 开关盖
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodSwitchLid methodSwitchLid = new MethodSwitchLid();
|
SwitchLidBll switchLidBll = new SwitchLidBll();
|
methodSwitchLid = switchLidBll.GenerateMethodSwitchLidDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodSwitchLid;
|
methodEx.isEnabled = methodSwitchLid.status == "enable";
|
testDesign.Method_SwitchLid(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.fileMoveLiquid:
|
#region 文件开关盖移液
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodFileMoveLiquid methodFileMoveLiquid = new MethodFileMoveLiquid();
|
FileMoveLiquidBll fileMoveLiquidBll = new FileMoveLiquidBll();
|
methodFileMoveLiquid = fileMoveLiquidBll.GenerateMethodFileMoveLiquidDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodFileMoveLiquid;
|
methodEx.isEnabled = methodFileMoveLiquid.status == "enable";
|
testDesign.Method_FileMoveLiquid(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.fileMoveLabware:
|
#region 文件转板
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodFileMoveLabware methodFileMoveLabware = new MethodFileMoveLabware();
|
FileMoveLabwareBll fileMoveLabwareBll = new FileMoveLabwareBll();
|
methodFileMoveLabware = fileMoveLabwareBll.GenerateMethodFileMoveLabwareDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodFileMoveLabware;
|
methodEx.isEnabled = methodFileMoveLabware.status == "enable";
|
testDesign.Method_FileMoveLabware(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.subMethod:
|
#region 子方法
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodSubMethod methodSubMethod = new SubMethodBll().GenerateMethodSubMethodDataByXmlNode(xmlNodeMethodList[i], true);
|
methodEx.tag = methodSubMethod;
|
methodEx.isEnabled = methodSubMethod.status == "enable";
|
|
testDesign.Method_SubMethod(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.varCalc:
|
#region 变量计算
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodVarCalc methodVarCalc = new MethodVarCalc();
|
VarCalcBll varCalcBll = new VarCalcBll();
|
methodVarCalc = varCalcBll.GenerateMethodVarCalcDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodVarCalc;
|
if (methodVarCalc != null)
|
{
|
string logicSymbol = string.Empty;
|
if (methodVarCalc.calcOperator == (int)CalcOperatorTypeEnum.Add)
|
{
|
logicSymbol = "+";
|
}
|
else if (methodVarCalc.calcOperator == (int)CalcOperatorTypeEnum.Minus)
|
{
|
logicSymbol = "-";
|
}
|
else if (methodVarCalc.calcOperator == (int)CalcOperatorTypeEnum.Time)
|
{
|
logicSymbol = "×";
|
}
|
else if (methodVarCalc.calcOperator == (int)CalcOperatorTypeEnum.Pide)
|
{
|
logicSymbol = "÷";
|
}
|
else if (methodVarCalc.calcOperator == (int)CalcOperatorTypeEnum.Mod)
|
{
|
logicSymbol = "%";
|
}
|
methodEx.method_Tipcontent = string.Format("{0}{1}{2}={3}", methodVarCalc.calcValue1.ToString(), logicSymbol, methodVarCalc.calcValue2.ToString(), methodVarCalc.calcResult.ToString());
|
}
|
methodEx.isEnabled = methodVarCalc.status == "enable";
|
testDesign.Method_VariableCalculate(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
case (int)MethodNameEnum.cutGum:
|
#region 文件切胶
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
MethodElectroFile methodElectroFile = new MethodElectroFile();
|
FileCutGumBll fileCutGumBll = new FileCutGumBll();
|
methodElectroFile = fileCutGumBll.GenerateMethodElectroFileDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodElectroFile;
|
methodEx.isEnabled = methodElectroFile.status == "enable";
|
testDesign.Method_FileElectro(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
#endregion
|
break;
|
default:
|
#region 第三方设备
|
if (xmlNodeMethodList[i].SelectSingleNode("isThirdPart") != null)
|
{
|
bool isThirdPart = bool.Parse(xmlNodeMethodList[i].SelectSingleNode("isThirdPart").InnerText);
|
if (!isThirdPart)
|
{
|
break;
|
}
|
|
methodEx = this.GenerateMethodEx(xmlNodeMethodList[i]);
|
|
ThirdPartBll thirdPartBll = new ThirdPartBll();
|
MethodThirdPart methodThirdPart = thirdPartBll.GenerateMethodThirdPartDataByXmlNode(xmlNodeMethodList[i]);
|
methodEx.tag = methodThirdPart;
|
methodEx.method_Tipcontent = string.Format("{0}", methodThirdPart.deviceMethod == null ? "" : methodThirdPart.deviceMethod.ParameterName);
|
methodEx.isEnabled = methodThirdPart.status == "enable";
|
|
testDesign.Method_ThirdPart(methodEx);
|
|
if (sourceItem == null)
|
{
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
#endregion
|
break;
|
|
}
|
|
var mainWindow = (MainWindow)Application.Current.MainWindow;
|
if (mainWindow != null)
|
{
|
if (methodEx != null)
|
{
|
mainWindow.SetObserverNode(methodEx);
|
}
|
}
|
});
|
|
UpdateProgress(i);
|
Thread.Sleep(1); // 模拟耗时操作
|
}
|
|
this.Dispatcher.Invoke(() =>
|
{
|
testDesign.treeviewWorkflow.ItemsSource = testDesign.rootMethod.Children;
|
//
|
|
testDesign.ReOrderMethodIndex("", testDesign.rootMethod);
|
|
testDesign.updateWaitforOnWorkflow();
|
rootGridTitle.RowDefinitions[1].Height = new GridLength(0);
|
});
|
|
//启动一个定时器,1秒内更新一下界面
|
DispatcherTimer timerText = new DispatcherTimer();
|
timerText.Interval = TimeSpan.FromMilliseconds(1000);//1秒
|
timerText.Tick += timerText_Tick;
|
timerText.Start();
|
countOfLoad = 0;
|
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("BindWorkFlowIntoTree error", ex);
|
}
|
finally
|
{
|
isOpenning = false;
|
this.Dispatcher.Invoke(() =>
|
{
|
Mouse.OverrideCursor = null;
|
});
|
}
|
});
|
return;
|
}
|
#endregion
|
|
int countOfLoad = 0;
|
#region 定时器事件——检测是否在30分钟内持续操作了本软件,否则锁屏
|
private void timerText_Tick(object sender, EventArgs e)
|
{
|
if (countOfLoad == 0)
|
{
|
countOfLoad++;
|
testDesign.ReOrderMethodData(testDesign.rootMethod);
|
}
|
else
|
{
|
|
}
|
|
}
|
#endregion
|
|
#region 根据XmlNode创建MethodEx
|
public MethodEx GenerateMethodEx(XmlNode xmlNode)
|
{
|
MethodEx methodEx = null;
|
try
|
{
|
ObservableCollection<Method> methods = MethodDB.GetMethodFromdb(Shared.SoftwareInformation.software_device_number);
|
if (xmlNode.SelectSingleNode("label").InnerText == "start")
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("开始"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
|
testDesign.rootMethod.Children.Add(methodEx);
|
}
|
}
|
|
#region 循环
|
else if (xmlNode.SelectSingleNode("label").InnerText == "循环开始")
|
{
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("循环"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
//methodExes[methodExes.Count - 1] = methodEx;
|
methodExes.Add(methodEx);
|
sourceItem.Children.Add(methodEx);
|
methodEx.SetParent(sourceItem);
|
sourceItem = methodEx;
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("循环"));
|
if (currentMethod != null)
|
{
|
sourceItem = methodEx;
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("循环"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else if (xmlNode.SelectSingleNode("label").InnerText == "循环结束")
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("循环"));
|
if (currentMethod != null)
|
{
|
string id = Guid.NewGuid().ToString();
|
sourceItem.method_name += Properties.Resources.strBegin;
|
sourceItem.groupID = id;
|
MethodEx source = new MethodEx(sourceItem);
|
MethodEx endItem = new MethodEx(source, sourceItem);
|
endItem.groupID = id;
|
endItem.method_name = "循环" + Properties.Resources.strEnd;
|
endItem.method_ico = "循环结束.png";
|
endItem.Moveable = false;
|
endItem.method_Tipcontent = "";
|
sourceItem.Children.Add(endItem);
|
}
|
methodEx = sourceItem;
|
}
|
#endregion
|
|
#region 组合
|
else if (xmlNode.SelectSingleNode("label").InnerText == "组合开始")
|
{
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("组合"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
methodExes.Add(methodEx);
|
sourceItem.Children.Add(methodEx);
|
methodEx.SetParent(sourceItem);
|
sourceItem = methodEx;
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("组合"));
|
if (currentMethod != null)
|
{
|
sourceItem = methodEx;
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("组合"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else if (xmlNode.SelectSingleNode("label").InnerText == "组合结束")
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("组合"));
|
if (currentMethod != null)
|
{
|
string id = Guid.NewGuid().ToString();
|
sourceItem.groupID = id;
|
MethodEx source = new MethodEx(sourceItem);
|
MethodEx endItem = new MethodEx(source, sourceItem);
|
endItem.groupID = id;
|
endItem.method_name = "组合" + Properties.Resources.strEnd;
|
endItem.method_ico = "组合结束.png";
|
endItem.Moveable = false;
|
sourceItem.Children.Add(endItem);
|
}
|
methodEx = sourceItem;
|
}
|
#endregion
|
|
#region 夹爪保持
|
else if (xmlNode.SelectSingleNode("label").InnerText == "夹爪保持开始")
|
{
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("夹爪保持"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
methodExes.Add(methodEx);
|
sourceItem.Children.Add(methodEx);
|
methodEx.SetParent(sourceItem);
|
sourceItem = methodEx;
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("夹爪保持"));
|
if (currentMethod != null)
|
{
|
sourceItem = methodEx;
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("夹爪保持"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else if (xmlNode.SelectSingleNode("label").InnerText == "夹爪保持结束")
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_content.Equals("夹爪保持"));
|
if (currentMethod != null)
|
{
|
string id = Guid.NewGuid().ToString();
|
sourceItem.groupID = id;
|
MethodEx source = new MethodEx(sourceItem);
|
MethodEx endItem = new MethodEx(source, sourceItem);
|
endItem.groupID = id;
|
endItem.method_content = endItem.method_name = "夹爪保持" + Properties.Resources.strEnd;
|
endItem.method_ico = "夹爪保持结束.png";
|
endItem.Moveable = false;
|
sourceItem.Children.Add(endItem);
|
//methodEx = endItem;
|
}
|
methodEx = sourceItem;
|
|
}
|
#endregion
|
|
#region if开始
|
else if (xmlNode.SelectSingleNode("label").InnerText == "if开始")
|
{
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
//methodExes[methodExes.Count - 1] = methodEx;
|
methodEx.method_ico = "开始If.png";
|
methodEx.method_name = "if开始";
|
methodEx.method_content = "if开始";
|
methodExes.Add(methodEx);
|
sourceItem.Children.Add(methodEx);
|
methodEx.SetParent(sourceItem);
|
sourceItem = methodEx;
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
sourceItem = methodEx;
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
methodEx.method_ico = "开始If.png";
|
methodEx.method_name = "if开始";
|
methodEx.method_content = "if开始";
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
methodEx.method_ico = "开始If.png";
|
methodEx.method_name = "if开始";
|
methodEx.method_content = "if开始";
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else if (xmlNode.SelectSingleNode("label").InnerText == "if结束")
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
string id = Guid.NewGuid().ToString();
|
sourceItem.method_ico = "开始If.png";
|
sourceItem.method_name = "if开始";
|
sourceItem.method_content = "if开始";
|
sourceItem.groupID = id;
|
MethodEx source = new MethodEx(sourceItem);
|
MethodEx endItem = new MethodEx(source, sourceItem);
|
endItem.groupID = id;
|
endItem.method_name = "if" + Properties.Resources.strEnd;
|
endItem.method_ico = "结束If.png";
|
endItem.Moveable = false;
|
sourceItem.Children.Add(endItem);
|
}
|
methodEx = sourceItem;
|
}
|
#endregion
|
|
#region else开始
|
else if (xmlNode.SelectSingleNode("label").InnerText == "else开始")
|
{
|
if (methodExes.Count > 0)
|
{
|
if (methodExes[methodExes.Count - 1] != null)
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
//methodExes[methodExes.Count - 1] = methodEx;
|
methodEx.method_ico = "开始else.png";
|
methodEx.method_name = "else开始";
|
methodEx.method_content = "else开始";
|
methodExes.Add(methodEx);
|
sourceItem.Children.Add(methodEx);
|
methodEx.SetParent(sourceItem);
|
sourceItem = methodEx;
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
sourceItem = methodEx;
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
methodEx.method_ico = "开始else.png";
|
methodEx.method_name = "else开始";
|
methodEx.method_content = "else开始";
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
methodEx.method_ico = "开始else.png";
|
methodEx.method_name = "else开始";
|
methodEx.method_content = "else开始";
|
sourceItem = methodEx;
|
methodExes.Add(sourceItem);
|
}
|
}
|
}
|
else if (xmlNode.SelectSingleNode("label").InnerText == "else结束")
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals("条件判定"));
|
if (currentMethod != null)
|
{
|
string id = Guid.NewGuid().ToString();
|
sourceItem.method_ico = "开始else.png";
|
sourceItem.method_name = "else开始";
|
sourceItem.method_content = "else开始";
|
sourceItem.groupID = id;
|
MethodEx source = new MethodEx(sourceItem);
|
MethodEx endItem = new MethodEx(source, sourceItem);
|
endItem.groupID = id;
|
endItem.method_name = "else" + Properties.Resources.strEnd;
|
endItem.method_ico = "结束else.png";
|
endItem.Moveable = false;
|
sourceItem.Children.Add(endItem);
|
}
|
methodEx = sourceItem;
|
}
|
#endregion
|
|
#region 其它
|
else
|
{
|
Method currentMethod = methods.FirstOrDefault(x => x.method_name.Equals(xmlNode.SelectSingleNode("label").InnerText));
|
|
// 第三方设备名称变更后,可通过ID找出来
|
if (xmlNode.SelectSingleNode("isThirdPart") != null &&
|
bool.Parse(xmlNode.SelectSingleNode("isThirdPart").InnerText) && currentMethod == null)
|
{
|
currentMethod = methods.FirstOrDefault(x => x.method_id.Equals(xmlNode.SelectSingleNode("device/id").InnerText));
|
}
|
|
Method currentMethodEnd = methods.FirstOrDefault(x => x.method_name.Equals("结束"));
|
|
#region 常规方法
|
if (currentMethod != null)
|
{
|
methodEx = new MethodEx(currentMethod, testDesign.rootMethod);
|
|
//节点内容绑定
|
//methodEx.control
|
|
//判断是否还在循环内,如果还在,则取出最后一个添加
|
bool isInnerLoop = false;
|
|
for (int i = methodExes.Count - 1; i >= 0; i--)
|
{
|
if (methodExes[i] != null)
|
{
|
isInnerLoop = true;
|
break;
|
}
|
}
|
if (isInnerLoop)
|
{
|
for (int k = methodExes.Count - 1; k >= 0; k--)
|
{
|
if (methodExes[k] != null)
|
{
|
sourceItem = methodExes[k];
|
break;
|
}
|
}
|
if (sourceItem != null)
|
{
|
sourceItem.Children.Add(methodEx);
|
methodEx.SetParent(sourceItem);
|
}
|
}
|
else
|
{
|
if (sourceItem != null)
|
{
|
sourceItem.Children.Add(methodEx);
|
}
|
}
|
}
|
#endregion
|
|
#region 结束
|
else if (currentMethodEnd != null && xmlNode.SelectSingleNode("name").InnerText == "Method_End")
|
{
|
methodEx = new MethodEx(currentMethodEnd, testDesign.rootMethod);
|
if (sourceItem != null)
|
{
|
sourceItem.Children.Add(methodEx);
|
}
|
currentMethodEnd = null;
|
}
|
#endregion
|
}
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
return methodEx;
|
}
|
#endregion
|
|
#region 另存为
|
private void btnSaveAs_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
if (btnTestDesign.IsChecked == true)
|
{
|
string fileDir = string.Empty;
|
SaveFileDialog dlg = new SaveFileDialog();
|
dlg.Title = "另存为";
|
dlg.FileName = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.xmed"; // Default file name
|
dlg.DefaultExt = ".xmed"; // Default file extension
|
dlg.Filter = "method文件|*.xmed"; // Filter files by extension
|
dlg.InitialDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
|
|
if (dlg.ShowDialog(this) == true)
|
{
|
SaveWorkflow(dlg.FileName, true);
|
}
|
}
|
else if (btnConsumableManager.IsChecked == true)
|
{
|
//consumableManagement.SaveConsumable();
|
//导出成文件
|
}
|
else if (btnLiquidManager.IsChecked == true)
|
{
|
//liquidManagement.SaveLiquid();
|
//导出成文件
|
}
|
else if (btnBacteriaManager.IsChecked == true)
|
{
|
//bacteriaManagement.SaveBacteria();
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 首页按钮
|
bool firstPagePressed = false;//首页是否被按下
|
public void btnStartFirstPage_Click(object sender, RoutedEventArgs e)
|
{
|
firstPagePressed = true;
|
btnFirst.Visibility = Visibility.Visible;
|
btnUserManager.IsChecked = false;
|
btnUser.Visibility = Visibility.Collapsed;
|
if (gridMainContent.Children.Count > 0)
|
{
|
uIElement = gridMain;
|
// gridMainContent.Children.RemoveAt(gridMainContent.Children.Count - 1);
|
gridMainContent.Children.RemoveAt(0);
|
}
|
|
// gridMainContent.Children.Add(uIElement);
|
gridMainContent.Children.Insert(0, uIElement);
|
|
if (gridContent.Children.Count > 0)
|
gridContent.Children.RemoveAt(gridContent.Children.Count - 1);
|
List<ImageRadioButton> listBtn = ViewCom.GetChildObjects<ImageRadioButton>((DependencyObject)gdLeftImageList, typeof(ImageRadioButton));
|
if (listBtn.Count > 0)
|
{
|
foreach (ImageRadioButton i in listBtn)
|
{
|
if (i.IsChecked == true)
|
{
|
i.IsChecked = false;
|
}
|
}
|
}
|
if (deviceStatus == null)
|
{
|
deviceStatus = new DeviceStatus();
|
gridContent.Children.Add(deviceStatus);
|
}
|
else
|
{
|
gridContent.Children.Add(deviceStatus);
|
}
|
}
|
#endregion
|
|
#region 主窗体关闭事件
|
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
{
|
try
|
{
|
if (wasExecuteInitial)
|
{
|
// 断开设备底层连接
|
HxResult ret = MethodAction.Instance.ManualDispose();
|
|
#region 断开成像Socket
|
if (ConfigurationManager.AppSettings["openTakePhoto"].ToString() == "true" &&
|
socketTcpListener != null)
|
{
|
if (socketTcpListener.IsConnect() == true)
|
{
|
socketTcpListener.CloseConnect();
|
}
|
}
|
#endregion
|
|
#region 断开与设备的连接
|
// 停止服务端监听
|
SocketInteriorService.BreakConnect();
|
// 断开与设备的通讯
|
EquConnect.BreakDeviceConnect();
|
#endregion
|
}
|
|
Application.Current.Shutdown();
|
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 控制面板
|
private async void btnControl_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
ControlPanel controlPanel = new ControlPanel();
|
controlPanel.Owner = (Window)Shared.Main;
|
controlPanel.ShowDialog();
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 暂停按钮
|
//int pauseState = 0;//1:暂停状态;0:正常状态
|
//private async void btnPause_Click(object sender, RoutedEventArgs e)
|
//{
|
// if (pauseState == 0)
|
// {
|
// pauseState = 1;
|
// runWnd.manualEvent.Reset();
|
|
// btnPause.Content = Properties.Resources.btnContinue.ToString();
|
|
// HxResult ret = MethodAction.Instance.StatusLamp(5);
|
// await Task.Factory.StartNew(() => MethodAction.Instance.Interrupt(1, true));
|
// }
|
// else
|
// {
|
// pauseState = 0;
|
// runWnd.manualEvent.Set();
|
// btnPause.Content = Properties.Resources.btnPause.ToString();
|
// HxResult ret = MethodAction.Instance.StatusLamp(4);
|
// await Task.Factory.StartNew(() => MethodAction.Instance.Interrupt(2));
|
// }
|
//}
|
#endregion
|
|
#region 断线重连
|
private void imgDeviceStatus_PreviewMouseDown(object sender, MouseButtonEventArgs e)
|
{
|
if (MethodAction.Instance != null)
|
{
|
if (!MethodAction.Instance.Connected)
|
{
|
HxResult ret = MethodAction.Instance.Connect();
|
if (ret.Result != ResultType.Success)
|
{
|
// 状态0 未链接 黄闪
|
ret = CommonBll.StatusLamp(0, false);
|
EnableSimulator = true;
|
connectedEquip = false;
|
OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("设备连接", "用户:" + Shared.User.username + "重新连接设备", Shared.User.username, "设备连接", "", "", "用户[id:" + Shared.User.username + "]", "失败"));
|
}
|
else
|
{
|
// 状态1 链接成功 蓝亮
|
ret = CommonBll.StatusLamp(1, false);
|
|
string TargetPath = "Assets/connect.png";
|
imgDeviceStatus.Source = new BitmapImage(new Uri(TargetPath, UriKind.Relative));
|
connectedEquip = true;
|
OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("设备连接", "用户:" + Shared.User.username + "重新连接设备", Shared.User.username, "设备连接", "", "", "用户[id:" + Shared.User.username + "]", "成功"));
|
|
// 连接设备初始化后
|
DoAfterInitDevice();
|
}
|
}
|
}
|
}
|
#endregion
|
|
#region 系统设置
|
SystemSettings systemSettings = null;
|
private void btnSettings_Click(object sender, RoutedEventArgs e)
|
{
|
systemSettings = new SystemSettings();
|
systemSettings.mainWindow = this;
|
systemSettings.observers.Clear();
|
SetObserverNode(testDesign.rootMethod);
|
systemSettings.ShowDialog();
|
}
|
#endregion
|
|
#region 关于
|
private void btnAbout_Click(object sender, RoutedEventArgs e)
|
{
|
SystemInformation systemInformation = new SystemInformation();
|
systemInformation.Width = 760;
|
systemInformation.Height = 410;
|
systemInformation.Owner = this;
|
systemInformation.ShowDialog();
|
}
|
#endregion
|
|
#region 事件接收函数
|
private void MainEvent(object sender, EventExArgs e)
|
{
|
// 显示设置报错Dialog
|
if (e.nType == EventEnum.ShowDeviceErrorDialg)
|
{
|
Application.Current.Dispatcher.Invoke(() =>
|
{
|
ErrorClientData errorData = (ErrorClientData)sender;
|
OperateDeviceDialog operateDeviceDialog = new OperateDeviceDialog(errorData);
|
operateDeviceDialog.ShowDialog();
|
EventBind.OperMark = operateDeviceDialog.OperMark; // 节点操作类型(1跳过、2重试、3终止)
|
|
SocketInteriorService.dicManualResetEvent[Shared.Exp.ExperimentId].Set();
|
});
|
}
|
}
|
#endregion
|
|
private void btnStartFirstPage_MouseEnter(object sender, MouseEventArgs e)
|
{
|
//RectangleGeometry rectangleGeometry = new RectangleGeometry(new Rect(0, 0, 70, 70), 5, 5);
|
//GeometryDrawing MaskDrawing = new GeometryDrawing(Brushes.White, null, rectangleGeometry);
|
//DrawingBrush drawingBrush = new DrawingBrush(MaskDrawing);
|
//btnStartFirstPage.OpacityMask = drawingBrush;
|
//drawingBrush.Stretch = Stretch.Fill;
|
//btnStartFirstPage.OpacityMask.Opacity = 0.8d;
|
}
|
|
private void btnStartFirstPage_MouseLeave(object sender, MouseEventArgs e)
|
{
|
//btnStartFirstPage.OpacityMask.Opacity = 1d;
|
}
|
|
private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e)
|
{
|
|
}
|
}
|
}
|