using HalconDotNet;
|
using LB_SmartVision.Forms.Pages.ProcessPage;
|
using LB_SmartVision.ProcessRun;
|
using LB_VisionControls;
|
using LB_VisionControls.Forms;
|
using LB_VisionProcesses;
|
using ReaLTaiizor.Controls;
|
using System;
|
using System.Collections.Concurrent;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
|
namespace LB_SmartVision.Forms.Pages.SettingPage
|
{
|
public partial class LayoutSettingControl : UserControl
|
{
|
private Layout layout { get; set; } = new Layout();
|
|
private ProcessRunBll processRunBll
|
{
|
get
|
{
|
if (GlobalVar.dicProcesses.ContainsKey(cmbProcess.Text))
|
{
|
return GlobalVar.dicProcesses[cmbProcess.Text];
|
}
|
else
|
{
|
return null;
|
}
|
}
|
}
|
|
public bool IsSelected { get { return lblName.Checked; } }
|
|
public string Title { get { return lblName.Text; } }
|
|
public string ProcessName { get { return cmbProcess.Text; } }
|
|
public string InputImage { get { return cmbInputImage.Text; } }
|
|
public string SaveImageDir { get { return txtSavePath.Text; } }
|
|
public string RecordImage { get { return txtRecord.Text; } }
|
|
|
public LayoutSettingControl(Layout layout = null)
|
{
|
InitializeComponent();
|
|
this.layout = layout;
|
|
txtSavePath.TextChanged += TextChanged;
|
txtSavePath.MouseHover += MouseHover;
|
|
txtSaveNameHead.TextChanged += TextChanged;
|
txtSaveNameHead.MouseHover += MouseHover;
|
|
txtRecord.TextChanged += TextChanged;
|
txtRecord.TextChanged += TextChanged;
|
|
cmbProcess.MouseClick += MouseClick;
|
cmbInputImage.MouseClick += MouseClick;
|
|
cmbProcess.SelectedIndexChanged += SelectedIndexChanged;
|
cmbInputImage.SelectedIndexChanged += SelectedIndexChanged;
|
|
cmbProcess.Items.Clear();
|
cmbProcess.Items.Add("");
|
cmbProcess.Items.AddRange(GlobalVar.dicProcesses.Keys.ToArray());
|
|
if (layout != null)
|
{
|
lblName.Text = layout.Title;
|
cmbProcess.Text = layout.ProcessName;
|
cmbInputImage.Text = layout.InputImage;
|
txtRecord.Text = layout.RecordImage;
|
|
txtSavePath.Text = layout.SaveImageDir;
|
txtSaveNameHead.Text = layout.SaveImageHead;
|
}
|
}
|
|
private void MouseClick(object sender, EventArgs e)
|
{
|
switch ((sender as ComboBox).Name)
|
{
|
case "cmbProcess":
|
{
|
cmbProcess.Items.Clear();
|
cmbProcess.Items.Add("");
|
cmbProcess.Items.AddRange(GlobalVar.dicProcesses.Keys.ToArray());
|
break;
|
}
|
case "cmbInputImage":
|
{
|
cmbInputImage.Items.Clear();
|
cmbInputImage.Items.Add("");
|
if (processRunBll == null)
|
{
|
return;
|
}
|
foreach (var lstOutput in processRunBll.dicOutputsMapping)
|
{
|
cmbInputImage.Items.Add($"{lstOutput.Key}");
|
}
|
break;
|
}
|
}
|
}
|
|
private void SelectedIndexChanged(object sender, EventArgs e)
|
{
|
switch ((sender as ComboBox).Name)
|
{
|
case "cmbProcess":
|
{
|
layout.ProcessName = cmbProcess.Text;
|
break;
|
}
|
case "cmbInputImage":
|
{
|
layout.InputImage = cmbInputImage.Text;
|
break;
|
}
|
}
|
}
|
|
private void TextChanged(object sender, EventArgs e)
|
{
|
switch ((sender as TextBox).Name)
|
{
|
case "txtSavePath":
|
{
|
layout.SaveImageDir = txtSavePath.Text;
|
break;
|
}
|
case "txtSaveNameHead":
|
{
|
layout.SaveImageHead = txtSaveNameHead.Text;
|
break;
|
}
|
case "txtRecord":
|
{
|
layout.RecordImage = txtRecord.Text;
|
break;
|
}
|
}
|
}
|
|
private void txtSavePath_MouseDoubleClick(object sender, MouseEventArgs e)
|
{
|
// 创建文件夹选择对话框
|
using (var folderDialog = new FolderBrowserDialog())
|
{
|
folderDialog.Description = "请选择文件夹";
|
folderDialog.ShowNewFolderButton = true; // 允许创建新文件夹
|
folderDialog.RootFolder = Environment.SpecialFolder.MyComputer; // 起始目录
|
|
// 显示对话框
|
DialogResult result = folderDialog.ShowDialog();
|
|
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(folderDialog.SelectedPath))
|
{
|
string selectedFolder = folderDialog.SelectedPath;
|
txtSavePath.Text = selectedFolder; // 设置文本框的值为选择的文件夹路径
|
}
|
}
|
}
|
|
private void txtSaveNameHead_MouseDoubleClick(object sender, MouseEventArgs e)
|
{
|
ProcessOutputsSelectForm processOutputsSelectForm
|
= new ProcessOutputsSelectForm(GlobalVar.dicProcesses[ProcessName].dicInputsMapping, GlobalVar.dicProcesses[ProcessName].dicOutputsMapping);
|
processOutputsSelectForm.ShowDialog();
|
|
if (!string.IsNullOrEmpty(processOutputsSelectForm.SelectedOutput))
|
{
|
txtSaveNameHead.Text += $"{{{processOutputsSelectForm.SelectedOutput}}}";
|
}
|
}
|
|
private void MouseHover(object sender, EventArgs e)
|
{
|
if (sender is TextBox txt)
|
{
|
new ToolTip()
|
{
|
ToolTipIcon = ToolTipIcon.Info, // 设置提示图标
|
UseAnimation = true, // 启用动画效果
|
UseFading = true // 启用淡入淡出效果
|
}.Show(txt.Text
|
, txt
|
, txt.Width / 2, txt.Height // 显示在控件底部中间
|
, 1000); // 显示1秒
|
}
|
}
|
|
private void lblName_MouseDown(object sender, MouseEventArgs e)
|
{
|
if (e.Button.ToString() == "Right")
|
{
|
RenameForm renameForm = new RenameForm(lblName.Text);
|
renameForm.ShowDialog();
|
if (renameForm.bRename)
|
{
|
|
string oriName = renameForm.strOriName;
|
string newName = renameForm.strNewName;
|
|
foreach (var layout in GlobalVar.dicLayout.Values)
|
{
|
if (layout.Title == newName)
|
{
|
MessageBox.Show($"变量【{newName}】已存在,请更换名称!", "异常");
|
return;
|
}
|
}
|
|
foreach (var layout in GlobalVar.dicLayout.Values)
|
{
|
if (layout.Title == oriName && lblName.Checked)
|
{
|
layout.Title = newName;
|
lblName.Text = newName;
|
return;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|