Files
ATV_STDLabelAttach/Handler/Project/Setting/fSetting_IOMessage.cs
2025-09-09 17:24:19 +09:00

188 lines
6.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AR;
namespace Project
{
public partial class fSetting_IOMessage : Form
{
AR.CommonSetting dummySetting; //설정을 임시로 저장하고 있다가 완료시에 덮어준다.
public fSetting_IOMessage()
{
InitializeComponent();
//setting
dummySetting = new AR.CommonSetting();
AR.SETTING.Data.CopyTo(dummySetting);
//COMM.SETTING.Data.CopyTo(dummySetting);
this.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Escape)
this.Close();
if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now;
};
this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; };
this.FormClosing += FSetting_IOMessage_FormClosing;
this.bsI.Sort = "idx";
this.bsO.Sort = "idx";
}
private void FSetting_IOMessage_FormClosing(object sender, FormClosingEventArgs e)
{
this.bsI.EndEdit();
this.bsO.EndEdit();
this.Validate();
var chgs1 = this.dataSet1.InputDescription.GetChanges();
var chgs2 = this.dataSet1.ErrorDescription.GetChanges();
if ((chgs1 != null && chgs1.Rows.Count > 0) || chgs2 != null && chgs2.Rows.Count > 0)
{
if (UTIL.MsgQ("There are unsaved changes. If you close now, these changes will be lost. Do you want to close the window?") != DialogResult.Yes)
{
e.Cancel = true;
return;
}
}
}
private void __Load(object sender, EventArgs e)
{
RefreshIn();
RefreshOut();
}
void RefreshIn()
{
this.dataSet1.InputDescription.Clear();
this.dataSet1.InputDescription.Merge(PUB.mdm.dataSet.InputDescription);
this.dataSet1.InputDescription.AcceptChanges();
//자료를 업데이트해준다.
var ecodelist = Enum.GetValues(typeof(eDIPin));
foreach (var item in ecodelist)
{
var pin = (eDIPin)item;
var idx = (int)pin;
var name = ((eDIName)idx).ToString();
if (Enum.IsDefined(typeof(eDIName), (byte)idx) == false)
name = string.Empty;
var title = $"[X{idx:X2}] {name}";
var dr = this.dataSet1.InputDescription.Where(t => t.Idx == idx).FirstOrDefault();
if (dr == null)
{
var newdr = dataSet1.InputDescription.NewInputDescriptionRow();
newdr.Name = pin.ToString();
newdr.Idx = (short)idx;
newdr.Title = title;
newdr.EndEdit();
this.dataSet1.InputDescription.AddInputDescriptionRow(newdr);
}
else
{
if (dr.Title.Equals(title) == false)
{
dr.Title = title;
dr.EndEdit();
}
}
}
this.dataSet1.InputDescription.AcceptChanges();
}
void RefreshOut()
{
this.dataSet1.OutputDescription.Clear();
this.dataSet1.OutputDescription.Merge(PUB.mdm.dataSet.OutputDescription);
this.dataSet1.OutputDescription.AcceptChanges();
//자료를 업데이트해준다.
var ecodelist = Enum.GetValues(typeof(eDOPin));
foreach (var item in ecodelist)
{
var pin = (eDOPin)item;
var idx = (int)pin;
var name = ((eDOName)idx).ToString();
if (Enum.IsDefined(typeof(eDOName), (byte)idx) == false)
name = string.Empty;
var title = $"[Y{idx:X2}] {name}";
var dr = this.dataSet1.OutputDescription.Where(t => t.Idx == idx).FirstOrDefault();
if (dr == null)
{
var newdr = dataSet1.OutputDescription.NewOutputDescriptionRow();
newdr.Name = pin.ToString();
newdr.Idx = (short)idx;
newdr.Title = title;
newdr.EndEdit();
this.dataSet1.OutputDescription.AddOutputDescriptionRow(newdr);
}
else
{
if (dr.Title.Equals(title) == false)
{
dr.Title = title;
dr.EndEdit();
}
}
}
this.dataSet1.OutputDescription.AcceptChanges();
}
private void toolStripButton3_Click_1(object sender, EventArgs e)
{
this.bsI.EndEdit();
this.bsO.EndEdit();
this.Validate();
this.dataSet1.AcceptChanges();
PUB.mdm.dataSet.InputDescription.Clear();
PUB.mdm.dataSet.Merge(this.dataSet1.InputDescription);
PUB.mdm.dataSet.InputDescription.AcceptChanges();
PUB.mdm.SaveModelI();
PUB.mdm.dataSet.OutputDescription.Clear();
PUB.mdm.dataSet.Merge(this.dataSet1.OutputDescription);
PUB.mdm.dataSet.OutputDescription.AcceptChanges();
PUB.mdm.SaveModelO();
//핀설정적용 230831
DIO.Pin.SetOutputData(PUB.mdm.dataSet.OutputDescription);
DIO.Pin.SetInputData(PUB.mdm.dataSet.InputDescription);
}
private void toolStripButton1_Click_1(object sender, EventArgs e)
{
RefreshIn();
RefreshOut();
}
private void inputDescriptionDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex ==4 )
{
var dv = sender as DataGridView;
var str = string.Empty;
var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (cell != null && cell.Value != null) str = cell.Value.ToString();
var f = new Dialog.fMessageInput(str);
if (f.ShowDialog() == DialogResult.OK)
{
cell.Value = f.value;
}
}
}
}
}