using Autofac;
|
using Bro.Common.Interface;
|
using Bro.Common.Model;
|
using Bro.UI.Model.Winform;
|
using System.Data;
|
|
namespace Bro.M135.Common
|
{
|
public partial class FrmDefectRectangleIndicatorEditor : Form
|
{
|
Canvas canvas = new Canvas();
|
public FrmDefectRectangleIndicatorEditor()
|
{
|
InitializeComponent();
|
|
canvas.Dock = DockStyle.Fill;
|
splitContainer1.Panel1.Controls.Clear();
|
splitContainer1.Panel1.Controls.Add(canvas);
|
|
this.Load += FrmDefectRectangleIndicatorEditor_Load;
|
}
|
|
private void FrmDefectRectangleIndicatorEditor_Load(object? sender, EventArgs e)
|
{
|
try
|
{
|
using (var scope = GlobalVar.Container.BeginLifetimeScope())
|
{
|
var iConfig = scope.Resolve<IProcessConfig>();
|
if (iConfig is IDefectIndicatorDisplay idi
|
&& iConfig is IDefectSwitcher ids
|
&& iConfig is ISpecCollector isc)
|
{
|
var defectList = ids.GetDefectSwitch().Select(u => u.DefectName).ToList();
|
defectList.AddRange(isc.GetSpecList().Select(u => u.Code));
|
|
cboDefectName.DataSource = defectList;
|
if (cboDefectName.Items.Count > 0)
|
{
|
cboDefectName.SelectedIndex = 0;
|
}
|
|
cboDefectName.TextChanged += CboDefectName_TextChanged;
|
|
if (!string.IsNullOrWhiteSpace(idi.BackgroundImageFilePath))
|
{
|
Bitmap image = new Bitmap(idi.BackgroundImageFilePath);
|
if (image != null)
|
{
|
canvas.LoadImage(image);
|
}
|
}
|
|
idi.DefectIndicatorCollection.ForEach(d =>
|
{
|
ROI_Rectangle roi = new ROI_Rectangle();
|
roi.Name = d.DefectName;
|
roi.BaseColor = d.BaseColor;
|
roi.DisplayRect = new RectangleF(d.DisplayRect.X, d.DisplayRect.Y, d.DisplayRect.Width, d.DisplayRect.Height);
|
|
canvas.Elements.Add(roi);
|
});
|
}
|
}
|
|
canvas.OnElementChangedHandle += Canvas_OnElementChangedHandle;
|
canvas.OnNewElementCreateDone = OnNewElementCreateDone;
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
|
private void Canvas_OnElementChangedHandle(IShapeElement obj)
|
{
|
var ele = canvas.Elements.FirstOrDefault(u => u.State == Bro.Common.Helper.EnumHelper.ElementState.Selected);
|
|
if (ele != null)
|
{
|
cboDefectName.Text = ele.Name;
|
colorPickDefectColor.Value = (ele as ElementBase).BaseColor;
|
}
|
}
|
|
private void CboDefectName_TextChanged(object? sender, EventArgs e)
|
{
|
var ele = canvas.Elements.FirstOrDefault(u => u.State == Bro.Common.Helper.EnumHelper.ElementState.Selected);
|
|
if (ele != null)
|
{
|
ele.Name = cboDefectName.Text;
|
}
|
}
|
|
private void colorPickDefectColor_ValueChanged(object sender, Color value)
|
{
|
var ele = canvas.Elements.FirstOrDefault(u => u.State == Bro.Common.Helper.EnumHelper.ElementState.Selected);
|
|
if (ele != null)
|
{
|
(ele as ElementBase).BaseColor = colorPickDefectColor.Value;
|
}
|
}
|
|
private void btnNew_Click(object sender, EventArgs e)
|
{
|
ROI_Rectangle roi = new ROI_Rectangle();
|
roi.IsShowRemark = false;
|
canvas.SetNewROIType(roi);
|
}
|
|
private bool OnNewElementCreateDone(Bitmap arg1, IShapeElement ele)
|
{
|
if (ele is ElementBase b)
|
{
|
b.Name = cboDefectName.Text;
|
b.BaseColor = colorPickDefectColor.Value;
|
b.IsShowRemark = true;
|
}
|
|
return true;
|
}
|
|
private void btnDelete_Click(object sender, EventArgs e)
|
{
|
var ele = canvas.Elements.FirstOrDefault(u => u.State == Bro.Common.Helper.EnumHelper.ElementState.Selected);
|
|
if (ele != null)
|
{
|
canvas.Elements.Remove(ele);
|
}
|
}
|
|
private void btnClose_Click(object sender, EventArgs e)
|
{
|
List<DefectRectangleIndicator> indicators = new List<DefectRectangleIndicator>();
|
canvas.Elements.ToList().ForEach(u =>
|
{
|
if (u is ROI_Rectangle roi)
|
{
|
DefectRectangleIndicator indicator = new DefectRectangleIndicator()
|
{
|
DefectName = u.Name,
|
BaseColor = roi.BaseColor,
|
DisplayRect = new RectangleF(roi.DisplayRect.X, roi.DisplayRect.Y, roi.DisplayRect.Width, roi.DisplayRect.Height)
|
};
|
|
indicators.Add(indicator);
|
}
|
});
|
|
using (var scope = GlobalVar.Container.BeginLifetimeScope())
|
{
|
var iConfig = scope.Resolve<IProcessConfig>();
|
if (iConfig is IDefectIndicatorDisplay config)
|
{
|
config.DefectIndicatorCollection = new List<DefectRectangleIndicator>(indicators);
|
}
|
}
|
|
this.DialogResult = DialogResult.OK;
|
}
|
}
|
}
|