diff --git a/INT_PT002/Controls/Recipe/ControlMenuRecipeSetting.cs b/INT_PT002/Controls/Recipe/ControlMenuRecipeSetting.cs
index 14d28c5..8726960 100644
--- a/INT_PT002/Controls/Recipe/ControlMenuRecipeSetting.cs
+++ b/INT_PT002/Controls/Recipe/ControlMenuRecipeSetting.cs
@@ -77,30 +77,30 @@ namespace INT_PT002.Controls
}
private void UpdateDisplayUser(UserItem user)
{
- switch (user.Status)
+ switch (user.Group)
{
- case Define.E_UserStatus.None:
+ case Define.E_UserGroup.None:
this.UpdateDisplauUserControls(false);
break;
- case Define.E_UserStatus.Level1:
+ case Define.E_UserGroup.Level1:
this.UpdateDisplauUserControls(this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuRecipe);
break;
- case Define.E_UserStatus.Level2:
+ case Define.E_UserGroup.Level2:
this.UpdateDisplauUserControls(this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuRecipe);
break;
- case Define.E_UserStatus.Level3:
+ case Define.E_UserGroup.Level3:
this.UpdateDisplauUserControls(this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuRecipe);
break;
- case Define.E_UserStatus.Admin:
+ case Define.E_UserGroup.Admin:
this.UpdateDisplauUserControls(this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuRecipe);
break;
- case Define.E_UserStatus.Developer:
+ case Define.E_UserGroup.Developer:
this.UpdateDisplauUserControls(true);
break;
- case Define.E_UserStatus.NotLogin:
+ case Define.E_UserGroup.NotLogin:
this.UpdateDisplauUserControls(false);
break;
- case Define.E_UserStatus.LogOff:
+ case Define.E_UserGroup.LogOut:
this.UpdateDisplauUserControls(false);
break;
default:
diff --git a/INT_PT002/Controls/System/ControlMenuSystemEthernet.Designer.cs b/INT_PT002/Controls/System/ControlMenuSystemEthernet.Designer.cs
new file mode 100644
index 0000000..90d7d8d
--- /dev/null
+++ b/INT_PT002/Controls/System/ControlMenuSystemEthernet.Designer.cs
@@ -0,0 +1,2086 @@
+namespace INT_PT002.Controls
+{
+ partial class ControlMenuSystemEthernet
+ {
+ ///
+ /// 필수 디자이너 변수입니다.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 사용 중인 모든 리소스를 정리합니다.
+ ///
+ /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 구성 요소 디자이너에서 생성한 코드
+
+ ///
+ /// 디자이너 지원에 필요한 메서드입니다.
+ /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
+ ///
+ private void InitializeComponent()
+ {
+ this.smartGroupBox1 = new SmartX.SmartGroupBox();
+ this.labelClientCount = new SmartX.SmartLabel();
+ this.smartListBoxClientList = new SmartX.SmartListBox();
+ this.groupBoxModbusSetting = new SmartX.SmartGroupBox();
+ this.buttonSaveModbus = new SmartX.SmartButton();
+ this.labelModbusRole = new SmartX.SmartLabel();
+ this.labelStartAddress = new SmartX.SmartLabel();
+ this.labelFunctions = new SmartX.SmartLabel();
+ this.labelTitleStartAddress = new SmartX.SmartLabel();
+ this.labelTitleFunctions = new SmartX.SmartLabel();
+ this.smartLabel10 = new SmartX.SmartLabel();
+ this.smartGroupBox5 = new SmartX.SmartGroupBox();
+ this.buttonSaveClient = new SmartX.SmartButton();
+ this.buttonStopClient = new SmartX.SmartButton();
+ this.labelHostPort = new SmartX.SmartLabel();
+ this.buttonStartClient = new SmartX.SmartButton();
+ this.labelHostIP4 = new SmartX.SmartLabel();
+ this.labelHostIP3 = new SmartX.SmartLabel();
+ this.labelHostIP2 = new SmartX.SmartLabel();
+ this.labelHostIP1 = new SmartX.SmartLabel();
+ this.labelClientStatus = new SmartX.SmartLabel();
+ this.smartLabel7 = new SmartX.SmartLabel();
+ this.smartLabel8 = new SmartX.SmartLabel();
+ this.smartLabel9 = new SmartX.SmartLabel();
+ this.smartGroupBox4 = new SmartX.SmartGroupBox();
+ this.buttonSaveServer = new SmartX.SmartButton();
+ this.buttonStopServer = new SmartX.SmartButton();
+ this.buttonStartServer = new SmartX.SmartButton();
+ this.labelLocalPort = new SmartX.SmartLabel();
+ this.labelConnectedIP = new SmartX.SmartLabel();
+ this.labelServerStatus = new SmartX.SmartLabel();
+ this.smartLabel6 = new SmartX.SmartLabel();
+ this.smartLabel2 = new SmartX.SmartLabel();
+ this.smartLabel3 = new SmartX.SmartLabel();
+ this.smartGroupBox3 = new SmartX.SmartGroupBox();
+ this.smartLabel5 = new SmartX.SmartLabel();
+ this.smartLabel4 = new SmartX.SmartLabel();
+ this.labelMACAddress6 = new SmartX.SmartLabel();
+ this.labelMACAddress5 = new SmartX.SmartLabel();
+ this.labelMACAddress4 = new SmartX.SmartLabel();
+ this.labelMACAddress1 = new SmartX.SmartLabel();
+ this.labelTitleMACAddress = new SmartX.SmartLabel();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.radioButtonLocalIpStatic = new SmartX.SmartRadioButton();
+ this.radioButtonLocalIpDHCP = new SmartX.SmartRadioButton();
+ this.labelTitleIPConfiguration = new SmartX.SmartLabel();
+ this.labelLocalSubnetMask4 = new SmartX.SmartLabel();
+ this.labelLocalSubnetMask3 = new SmartX.SmartLabel();
+ this.labelLocalSubnetMask2 = new SmartX.SmartLabel();
+ this.labelLocalSubnetMask1 = new SmartX.SmartLabel();
+ this.labelTitleSubnetMask = new SmartX.SmartLabel();
+ this.labelLocalGateway4 = new SmartX.SmartLabel();
+ this.labelLocalGateway3 = new SmartX.SmartLabel();
+ this.labelLocalGateway2 = new SmartX.SmartLabel();
+ this.labelLocalGateway1 = new SmartX.SmartLabel();
+ this.labelTitleGateway = new SmartX.SmartLabel();
+ this.labelLocalIP4 = new SmartX.SmartLabel();
+ this.labelLocalIP3 = new SmartX.SmartLabel();
+ this.labelLocalIP2 = new SmartX.SmartLabel();
+ this.labelLocalIP1 = new SmartX.SmartLabel();
+ this.labelTitleIPAddress = new SmartX.SmartLabel();
+ this.buttonSaveLocal = new SmartX.SmartButton();
+ this.labelHelp = new SmartX.SmartLabel();
+ this.smartGroupBox2 = new SmartX.SmartGroupBox();
+ this.smartButton1 = new SmartX.SmartButton();
+ this.smartLabel1 = new SmartX.SmartLabel();
+ this.buttonSaveMode = new SmartX.SmartButton();
+ this.smartLabel13 = new SmartX.SmartLabel();
+ this.comboBoxEthernetOpMode = new System.Windows.Forms.ComboBox();
+ this.comboBoxEthernetMode = new System.Windows.Forms.ComboBox();
+ this.timerServer = new System.Windows.Forms.Timer();
+ this.smartGroupBox1.SuspendLayout();
+ this.groupBoxModbusSetting.SuspendLayout();
+ this.smartGroupBox5.SuspendLayout();
+ this.smartGroupBox4.SuspendLayout();
+ this.smartGroupBox3.SuspendLayout();
+ this.panel2.SuspendLayout();
+ this.smartGroupBox2.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // smartGroupBox1
+ //
+ this.smartGroupBox1.BackGround = null;
+ this.smartGroupBox1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartGroupBox1.BackImage = null;
+ this.smartGroupBox1.Controls.Add(this.labelClientCount);
+ this.smartGroupBox1.Controls.Add(this.smartListBoxClientList);
+ this.smartGroupBox1.Controls.Add(this.groupBoxModbusSetting);
+ this.smartGroupBox1.Controls.Add(this.smartGroupBox5);
+ this.smartGroupBox1.Controls.Add(this.smartGroupBox4);
+ this.smartGroupBox1.Controls.Add(this.smartGroupBox3);
+ this.smartGroupBox1.Controls.Add(this.smartGroupBox2);
+ this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartGroupBox1.FrameLineThickness = 2;
+ this.smartGroupBox1.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.smartGroupBox1.HeaderHeightOffset = 9;
+ this.smartGroupBox1.Location = new System.Drawing.Point(0, 0);
+ this.smartGroupBox1.Name = "smartGroupBox1";
+ this.smartGroupBox1.RoundRadius = 5;
+ this.smartGroupBox1.Size = new System.Drawing.Size(909, 664);
+ this.smartGroupBox1.TabIndex = 3;
+ this.smartGroupBox1.Text = "smartGroupBox1";
+ this.smartGroupBox1.TextColor = System.Drawing.Color.White;
+ //
+ // labelClientCount
+ //
+ this.labelClientCount.BackGround = null;
+ this.labelClientCount.BackGroundColor = System.Drawing.Color.SkyBlue;
+ this.labelClientCount.BorderColor = System.Drawing.Color.Black;
+ this.labelClientCount.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelClientCount.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.labelClientCount.LineSpacing = 0F;
+ this.labelClientCount.Location = new System.Drawing.Point(-33, 260);
+ this.labelClientCount.Name = "labelClientCount";
+ this.labelClientCount.OverlapOptimize = true;
+ this.labelClientCount.PasswordChar = '\0';
+ this.labelClientCount.Radius = 3;
+ this.labelClientCount.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelClientCount.Size = new System.Drawing.Size(94, 28);
+ this.labelClientCount.TabIndex = 251;
+ this.labelClientCount.Text = "smartLabel1";
+ this.labelClientCount.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelClientCount.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelClientCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelClientCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelClientCount.Visible = false;
+ this.labelClientCount.Wordwrap = false;
+ //
+ // smartListBoxClientList
+ //
+ this.smartListBoxClientList.BackGround = null;
+ this.smartListBoxClientList.BackGroundColor = System.Drawing.Color.LightBlue;
+ this.smartListBoxClientList.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartListBoxClientList.BorderStyle = SmartX.SmartListBox.BORDERSTYLES.FixedSingle;
+ this.smartListBoxClientList.ColumnStyles = null;
+ this.smartListBoxClientList.DataSource = null;
+ this.smartListBoxClientList.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD;
+ this.smartListBoxClientList.ItemOffsetGap = 0;
+ this.smartListBoxClientList.ItemOffsetX = 0;
+ this.smartListBoxClientList.ItemOffsetY = 0;
+ this.smartListBoxClientList.ItemTextOffsetY = 1;
+ this.smartListBoxClientList.Location = new System.Drawing.Point(-33, 294);
+ this.smartListBoxClientList.MouseMoveEventSpace = 3;
+ this.smartListBoxClientList.MouseMoveSpace = 10;
+ this.smartListBoxClientList.Name = "smartListBoxClientList";
+ this.smartListBoxClientList.OverlapOptimize = true;
+ this.smartListBoxClientList.ScrollBarBackColor = System.Drawing.Color.DarkGray;
+ this.smartListBoxClientList.ScrollBarButtonColor = System.Drawing.Color.GhostWhite;
+ this.smartListBoxClientList.ScrollBarButtonHeight = 15;
+ this.smartListBoxClientList.ScrollBarButtonImage = null;
+ this.smartListBoxClientList.ScrollBarButtonRound = 0;
+ this.smartListBoxClientList.ScrollBarStyle = SmartX.SmartListBox.ScrollBarStyles.ScrollBar;
+ this.smartListBoxClientList.ScrollButtonHeight = 30;
+ this.smartListBoxClientList.ScrollButtonWidth = 30;
+ //
+ //
+ //
+ this.smartListBoxClientList.ScrollDownButton.BackGround = null;
+ this.smartListBoxClientList.ScrollDownButton.BackGroundColor = System.Drawing.Color.LightBlue;
+ this.smartListBoxClientList.ScrollDownButton.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartListBoxClientList.ScrollDownButton.ButtonDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(76)))), ((int)(((byte)(129)))));
+ this.smartListBoxClientList.ScrollDownButton.ButtonImageAutoSize = false;
+ this.smartListBoxClientList.ScrollDownButton.ButtonStyle = SmartX.SmartButton.ButtonStyles.Flat;
+ this.smartListBoxClientList.ScrollDownButton.ButtonText = "▼";
+ this.smartListBoxClientList.ScrollDownButton.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.smartListBoxClientList.ScrollDownButton.GroupID = 0;
+ this.smartListBoxClientList.ScrollDownButton.ImageDisable = null;
+ this.smartListBoxClientList.ScrollDownButton.ImageDown = null;
+ this.smartListBoxClientList.ScrollDownButton.ImageUp = null;
+ this.smartListBoxClientList.ScrollDownButton.Location = new System.Drawing.Point(62, 26);
+ this.smartListBoxClientList.ScrollDownButton.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.smartListBoxClientList.ScrollDownButton.Name = "SmartListBox_m_butScrollDown";
+ this.smartListBoxClientList.ScrollDownButton.NestedClickEventPrevent = false;
+ this.smartListBoxClientList.ScrollDownButton.OutlinePixel = 1;
+ this.smartListBoxClientList.ScrollDownButton.OverlapOptimize = true;
+ this.smartListBoxClientList.ScrollDownButton.RepeatInterval = 200;
+ this.smartListBoxClientList.ScrollDownButton.RepeatIntervalAccelerate = null;
+ this.smartListBoxClientList.ScrollDownButton.RoundSize = 10;
+ this.smartListBoxClientList.ScrollDownButton.SafeInterval = 200;
+ this.smartListBoxClientList.ScrollDownButton.Size = new System.Drawing.Size(30, 25);
+ this.smartListBoxClientList.ScrollDownButton.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.smartListBoxClientList.ScrollDownButton.TabIndex = 0;
+ this.smartListBoxClientList.ScrollDownButton.Text = null;
+ this.smartListBoxClientList.ScrollDownButton.TextColor = System.Drawing.Color.White;
+ this.smartListBoxClientList.ScrollDownButton.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartListBoxClientList.ScrollDownButton.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.smartListBoxClientList.ScrollDownButton.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.smartListBoxClientList.ScrollDownButton.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.smartListBoxClientList.ScrollStep = 1;
+ //
+ //
+ //
+ this.smartListBoxClientList.ScrollUpButton.BackGround = null;
+ this.smartListBoxClientList.ScrollUpButton.BackGroundColor = System.Drawing.Color.LightBlue;
+ this.smartListBoxClientList.ScrollUpButton.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartListBoxClientList.ScrollUpButton.ButtonDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(76)))), ((int)(((byte)(129)))));
+ this.smartListBoxClientList.ScrollUpButton.ButtonImageAutoSize = false;
+ this.smartListBoxClientList.ScrollUpButton.ButtonStyle = SmartX.SmartButton.ButtonStyles.Flat;
+ this.smartListBoxClientList.ScrollUpButton.ButtonText = "▲";
+ this.smartListBoxClientList.ScrollUpButton.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.smartListBoxClientList.ScrollUpButton.GroupID = 0;
+ this.smartListBoxClientList.ScrollUpButton.ImageDisable = null;
+ this.smartListBoxClientList.ScrollUpButton.ImageDown = null;
+ this.smartListBoxClientList.ScrollUpButton.ImageUp = null;
+ this.smartListBoxClientList.ScrollUpButton.Location = new System.Drawing.Point(62, 2);
+ this.smartListBoxClientList.ScrollUpButton.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.smartListBoxClientList.ScrollUpButton.Name = "SmartListBox_m_butScrollUp";
+ this.smartListBoxClientList.ScrollUpButton.NestedClickEventPrevent = false;
+ this.smartListBoxClientList.ScrollUpButton.OutlinePixel = 1;
+ this.smartListBoxClientList.ScrollUpButton.OverlapOptimize = true;
+ this.smartListBoxClientList.ScrollUpButton.RepeatInterval = 200;
+ this.smartListBoxClientList.ScrollUpButton.RepeatIntervalAccelerate = null;
+ this.smartListBoxClientList.ScrollUpButton.RoundSize = 10;
+ this.smartListBoxClientList.ScrollUpButton.SafeInterval = 200;
+ this.smartListBoxClientList.ScrollUpButton.Size = new System.Drawing.Size(30, 23);
+ this.smartListBoxClientList.ScrollUpButton.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.smartListBoxClientList.ScrollUpButton.TabIndex = 1;
+ this.smartListBoxClientList.ScrollUpButton.Text = null;
+ this.smartListBoxClientList.ScrollUpButton.TextColor = System.Drawing.Color.White;
+ this.smartListBoxClientList.ScrollUpButton.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartListBoxClientList.ScrollUpButton.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.smartListBoxClientList.ScrollUpButton.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.smartListBoxClientList.ScrollUpButton.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.smartListBoxClientList.SelectColor = System.Drawing.Color.Blue;
+ this.smartListBoxClientList.SelectFilled = true;
+ this.smartListBoxClientList.SelectItemIndex = -1;
+ this.smartListBoxClientList.SelectTextColor = System.Drawing.Color.White;
+ this.smartListBoxClientList.SeparationlineColor1 = System.Drawing.Color.Gray;
+ this.smartListBoxClientList.SeparationlineColor2 = System.Drawing.Color.LightGray;
+ this.smartListBoxClientList.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle;
+ this.smartListBoxClientList.SeparationlineVisibleBottom = true;
+ this.smartListBoxClientList.SeparationlineVisibleTop = true;
+ this.smartListBoxClientList.Size = new System.Drawing.Size(94, 53);
+ this.smartListBoxClientList.TabIndex = 250;
+ this.smartListBoxClientList.Text = "smartListBox1";
+ this.smartListBoxClientList.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartListBoxClientList.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartListBoxClientList.Visible = false;
+ //
+ // groupBoxModbusSetting
+ //
+ this.groupBoxModbusSetting.BackGround = null;
+ this.groupBoxModbusSetting.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.groupBoxModbusSetting.BackImage = null;
+ this.groupBoxModbusSetting.Controls.Add(this.buttonSaveModbus);
+ this.groupBoxModbusSetting.Controls.Add(this.labelModbusRole);
+ this.groupBoxModbusSetting.Controls.Add(this.labelStartAddress);
+ this.groupBoxModbusSetting.Controls.Add(this.labelFunctions);
+ this.groupBoxModbusSetting.Controls.Add(this.labelTitleStartAddress);
+ this.groupBoxModbusSetting.Controls.Add(this.labelTitleFunctions);
+ this.groupBoxModbusSetting.Controls.Add(this.smartLabel10);
+ this.groupBoxModbusSetting.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
+ this.groupBoxModbusSetting.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.groupBoxModbusSetting.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.groupBoxModbusSetting.FrameLineThickness = 2;
+ this.groupBoxModbusSetting.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.groupBoxModbusSetting.HeaderHeightOffset = 12;
+ this.groupBoxModbusSetting.Location = new System.Drawing.Point(554, 414);
+ this.groupBoxModbusSetting.Name = "groupBoxModbusSetting";
+ this.groupBoxModbusSetting.RoundRadius = 5;
+ this.groupBoxModbusSetting.Size = new System.Drawing.Size(287, 237);
+ this.groupBoxModbusSetting.TabIndex = 183;
+ this.groupBoxModbusSetting.Text = "Modbus Settings";
+ this.groupBoxModbusSetting.TextColor = System.Drawing.Color.White;
+ //
+ // buttonSaveModbus
+ //
+ this.buttonSaveModbus.BackGround = this.groupBoxModbusSetting;
+ this.buttonSaveModbus.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.buttonSaveModbus.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonSaveModbus.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonSaveModbus.ButtonImageAutoSize = true;
+ this.buttonSaveModbus.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonSaveModbus.ButtonText = "Save";
+ this.buttonSaveModbus.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonSaveModbus.GroupID = 0;
+ this.buttonSaveModbus.ImageDisable = null;
+ this.buttonSaveModbus.ImageDown = null;
+ this.buttonSaveModbus.ImageUp = null;
+ this.buttonSaveModbus.Location = new System.Drawing.Point(220, 4);
+ this.buttonSaveModbus.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonSaveModbus.Name = "buttonSaveModbus";
+ this.buttonSaveModbus.NestedClickEventPrevent = false;
+ this.buttonSaveModbus.OutlinePixel = 2;
+ this.buttonSaveModbus.OverlapOptimize = true;
+ this.buttonSaveModbus.RepeatInterval = 200;
+ this.buttonSaveModbus.RepeatIntervalAccelerate = null;
+ this.buttonSaveModbus.RoundSize = 10;
+ this.buttonSaveModbus.SafeInterval = 200;
+ this.buttonSaveModbus.Size = new System.Drawing.Size(62, 29);
+ this.buttonSaveModbus.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonSaveModbus.TabIndex = 249;
+ this.buttonSaveModbus.Text = null;
+ this.buttonSaveModbus.TextColor = System.Drawing.Color.White;
+ this.buttonSaveModbus.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonSaveModbus.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonSaveModbus.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonSaveModbus.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonSaveModbus.Visible = false;
+ this.buttonSaveModbus.Click += new System.EventHandler(this.buttonSaveModbus_Click);
+ //
+ // labelModbusRole
+ //
+ this.labelModbusRole.BackGround = null;
+ this.labelModbusRole.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelModbusRole.BorderColor = System.Drawing.Color.Black;
+ this.labelModbusRole.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelModbusRole.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelModbusRole.ForeColor = System.Drawing.Color.Red;
+ this.labelModbusRole.LineSpacing = 0F;
+ this.labelModbusRole.Location = new System.Drawing.Point(112, 86);
+ this.labelModbusRole.Name = "labelModbusRole";
+ this.labelModbusRole.OverlapOptimize = true;
+ this.labelModbusRole.PasswordChar = '\0';
+ this.labelModbusRole.Radius = 3;
+ this.labelModbusRole.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelModbusRole.Size = new System.Drawing.Size(167, 28);
+ this.labelModbusRole.TabIndex = 254;
+ this.labelModbusRole.Text = "04: Read input register";
+ this.labelModbusRole.TextColor = System.Drawing.Color.White;
+ this.labelModbusRole.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelModbusRole.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelModbusRole.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelModbusRole.Wordwrap = false;
+ //
+ // labelStartAddress
+ //
+ this.labelStartAddress.BackGround = null;
+ this.labelStartAddress.BackGroundColor = System.Drawing.Color.White;
+ this.labelStartAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelStartAddress.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelStartAddress.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelStartAddress.LineSpacing = 0F;
+ this.labelStartAddress.Location = new System.Drawing.Point(112, 154);
+ this.labelStartAddress.Name = "labelStartAddress";
+ this.labelStartAddress.OverlapOptimize = true;
+ this.labelStartAddress.PasswordChar = '\0';
+ this.labelStartAddress.Radius = 3;
+ this.labelStartAddress.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelStartAddress.Size = new System.Drawing.Size(80, 28);
+ this.labelStartAddress.TabIndex = 250;
+ this.labelStartAddress.Text = "100";
+ this.labelStartAddress.TextColor = System.Drawing.Color.Black;
+ this.labelStartAddress.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelStartAddress.Wordwrap = false;
+ this.labelStartAddress.Click += new System.EventHandler(this.labelStartAddress_Click);
+ //
+ // labelFunctions
+ //
+ this.labelFunctions.BackGround = null;
+ this.labelFunctions.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelFunctions.BorderColor = System.Drawing.Color.Black;
+ this.labelFunctions.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelFunctions.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelFunctions.ForeColor = System.Drawing.Color.Red;
+ this.labelFunctions.LineSpacing = 0F;
+ this.labelFunctions.Location = new System.Drawing.Point(112, 120);
+ this.labelFunctions.Name = "labelFunctions";
+ this.labelFunctions.OverlapOptimize = true;
+ this.labelFunctions.PasswordChar = '\0';
+ this.labelFunctions.Radius = 3;
+ this.labelFunctions.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelFunctions.Size = new System.Drawing.Size(167, 28);
+ this.labelFunctions.TabIndex = 253;
+ this.labelFunctions.Text = "04: Read input register";
+ this.labelFunctions.TextColor = System.Drawing.Color.White;
+ this.labelFunctions.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelFunctions.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelFunctions.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelFunctions.Wordwrap = false;
+ //
+ // labelTitleStartAddress
+ //
+ this.labelTitleStartAddress.BackGround = null;
+ this.labelTitleStartAddress.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleStartAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleStartAddress.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleStartAddress.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleStartAddress.ForeColor = System.Drawing.Color.Red;
+ this.labelTitleStartAddress.LineSpacing = 0F;
+ this.labelTitleStartAddress.Location = new System.Drawing.Point(10, 154);
+ this.labelTitleStartAddress.Name = "labelTitleStartAddress";
+ this.labelTitleStartAddress.OverlapOptimize = true;
+ this.labelTitleStartAddress.PasswordChar = '\0';
+ this.labelTitleStartAddress.Radius = 3;
+ this.labelTitleStartAddress.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleStartAddress.Size = new System.Drawing.Size(96, 28);
+ this.labelTitleStartAddress.TabIndex = 251;
+ this.labelTitleStartAddress.Text = "Start Address";
+ this.labelTitleStartAddress.TextColor = System.Drawing.Color.White;
+ this.labelTitleStartAddress.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleStartAddress.Wordwrap = false;
+ //
+ // labelTitleFunctions
+ //
+ this.labelTitleFunctions.BackGround = null;
+ this.labelTitleFunctions.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleFunctions.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleFunctions.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleFunctions.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleFunctions.ForeColor = System.Drawing.Color.Red;
+ this.labelTitleFunctions.LineSpacing = 0F;
+ this.labelTitleFunctions.Location = new System.Drawing.Point(10, 120);
+ this.labelTitleFunctions.Name = "labelTitleFunctions";
+ this.labelTitleFunctions.OverlapOptimize = true;
+ this.labelTitleFunctions.PasswordChar = '\0';
+ this.labelTitleFunctions.Radius = 3;
+ this.labelTitleFunctions.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleFunctions.Size = new System.Drawing.Size(96, 28);
+ this.labelTitleFunctions.TabIndex = 250;
+ this.labelTitleFunctions.Text = "Function";
+ this.labelTitleFunctions.TextColor = System.Drawing.Color.White;
+ this.labelTitleFunctions.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleFunctions.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleFunctions.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleFunctions.Wordwrap = false;
+ //
+ // smartLabel10
+ //
+ this.smartLabel10.BackGround = null;
+ this.smartLabel10.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel10.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel10.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel10.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel10.ForeColor = System.Drawing.Color.Red;
+ this.smartLabel10.LineSpacing = 0F;
+ this.smartLabel10.Location = new System.Drawing.Point(10, 86);
+ this.smartLabel10.Name = "smartLabel10";
+ this.smartLabel10.OverlapOptimize = true;
+ this.smartLabel10.PasswordChar = '\0';
+ this.smartLabel10.Radius = 3;
+ this.smartLabel10.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel10.Size = new System.Drawing.Size(96, 28);
+ this.smartLabel10.TabIndex = 249;
+ this.smartLabel10.Text = "Role";
+ this.smartLabel10.TextColor = System.Drawing.Color.White;
+ this.smartLabel10.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel10.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel10.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel10.Wordwrap = false;
+ //
+ // smartGroupBox5
+ //
+ this.smartGroupBox5.BackGround = null;
+ this.smartGroupBox5.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartGroupBox5.BackImage = null;
+ this.smartGroupBox5.Controls.Add(this.buttonSaveClient);
+ this.smartGroupBox5.Controls.Add(this.buttonStopClient);
+ this.smartGroupBox5.Controls.Add(this.labelHostPort);
+ this.smartGroupBox5.Controls.Add(this.buttonStartClient);
+ this.smartGroupBox5.Controls.Add(this.labelHostIP4);
+ this.smartGroupBox5.Controls.Add(this.labelHostIP3);
+ this.smartGroupBox5.Controls.Add(this.labelHostIP2);
+ this.smartGroupBox5.Controls.Add(this.labelHostIP1);
+ this.smartGroupBox5.Controls.Add(this.labelClientStatus);
+ this.smartGroupBox5.Controls.Add(this.smartLabel7);
+ this.smartGroupBox5.Controls.Add(this.smartLabel8);
+ this.smartGroupBox5.Controls.Add(this.smartLabel9);
+ this.smartGroupBox5.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
+ this.smartGroupBox5.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.smartGroupBox5.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartGroupBox5.FrameLineThickness = 2;
+ this.smartGroupBox5.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.smartGroupBox5.HeaderHeightOffset = 12;
+ this.smartGroupBox5.Location = new System.Drawing.Point(457, 201);
+ this.smartGroupBox5.Name = "smartGroupBox5";
+ this.smartGroupBox5.RoundRadius = 5;
+ this.smartGroupBox5.Size = new System.Drawing.Size(384, 206);
+ this.smartGroupBox5.TabIndex = 97;
+ this.smartGroupBox5.Text = "Client";
+ this.smartGroupBox5.TextColor = System.Drawing.Color.White;
+ //
+ // buttonSaveClient
+ //
+ this.buttonSaveClient.BackGround = this.smartGroupBox5;
+ this.buttonSaveClient.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.buttonSaveClient.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonSaveClient.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonSaveClient.ButtonImageAutoSize = true;
+ this.buttonSaveClient.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonSaveClient.ButtonText = "Save";
+ this.buttonSaveClient.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonSaveClient.GroupID = 0;
+ this.buttonSaveClient.ImageDisable = null;
+ this.buttonSaveClient.ImageDown = null;
+ this.buttonSaveClient.ImageUp = null;
+ this.buttonSaveClient.Location = new System.Drawing.Point(317, 5);
+ this.buttonSaveClient.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonSaveClient.Name = "buttonSaveClient";
+ this.buttonSaveClient.NestedClickEventPrevent = false;
+ this.buttonSaveClient.OutlinePixel = 2;
+ this.buttonSaveClient.OverlapOptimize = true;
+ this.buttonSaveClient.RepeatInterval = 200;
+ this.buttonSaveClient.RepeatIntervalAccelerate = null;
+ this.buttonSaveClient.RoundSize = 10;
+ this.buttonSaveClient.SafeInterval = 200;
+ this.buttonSaveClient.Size = new System.Drawing.Size(62, 29);
+ this.buttonSaveClient.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonSaveClient.TabIndex = 248;
+ this.buttonSaveClient.Text = null;
+ this.buttonSaveClient.TextColor = System.Drawing.Color.White;
+ this.buttonSaveClient.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonSaveClient.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonSaveClient.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonSaveClient.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonSaveClient.Visible = false;
+ this.buttonSaveClient.Click += new System.EventHandler(this.buttonSaveClient_Click);
+ //
+ // buttonStopClient
+ //
+ this.buttonStopClient.BackGround = this.smartGroupBox5;
+ this.buttonStopClient.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.buttonStopClient.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonStopClient.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonStopClient.ButtonImageAutoSize = true;
+ this.buttonStopClient.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonStopClient.ButtonText = "Stop";
+ this.buttonStopClient.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonStopClient.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.buttonStopClient.GroupID = 0;
+ this.buttonStopClient.ImageDisable = null;
+ this.buttonStopClient.ImageDown = null;
+ this.buttonStopClient.ImageUp = null;
+ this.buttonStopClient.Location = new System.Drawing.Point(210, 160);
+ this.buttonStopClient.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonStopClient.Name = "buttonStopClient";
+ this.buttonStopClient.NestedClickEventPrevent = false;
+ this.buttonStopClient.OutlinePixel = 2;
+ this.buttonStopClient.OverlapOptimize = true;
+ this.buttonStopClient.RepeatInterval = 200;
+ this.buttonStopClient.RepeatIntervalAccelerate = null;
+ this.buttonStopClient.RoundSize = 15;
+ this.buttonStopClient.SafeInterval = 200;
+ this.buttonStopClient.Size = new System.Drawing.Size(100, 35);
+ this.buttonStopClient.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonStopClient.TabIndex = 241;
+ this.buttonStopClient.Text = null;
+ this.buttonStopClient.TextColor = System.Drawing.Color.White;
+ this.buttonStopClient.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonStopClient.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonStopClient.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonStopClient.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonStopClient.Click += new System.EventHandler(this.buttonStopClient_Click);
+ //
+ // labelHostPort
+ //
+ this.labelHostPort.BackGround = null;
+ this.labelHostPort.BackGroundColor = System.Drawing.Color.White;
+ this.labelHostPort.BorderColor = System.Drawing.Color.Black;
+ this.labelHostPort.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelHostPort.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelHostPort.LineSpacing = 0F;
+ this.labelHostPort.Location = new System.Drawing.Point(153, 122);
+ this.labelHostPort.Name = "labelHostPort";
+ this.labelHostPort.OverlapOptimize = true;
+ this.labelHostPort.PasswordChar = '\0';
+ this.labelHostPort.Radius = 3;
+ this.labelHostPort.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelHostPort.Size = new System.Drawing.Size(80, 28);
+ this.labelHostPort.TabIndex = 243;
+ this.labelHostPort.Text = "100";
+ this.labelHostPort.TextColor = System.Drawing.Color.Black;
+ this.labelHostPort.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelHostPort.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelHostPort.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelHostPort.Wordwrap = false;
+ this.labelHostPort.Click += new System.EventHandler(this.labelHostPort_Click);
+ //
+ // buttonStartClient
+ //
+ this.buttonStartClient.BackGround = this.smartGroupBox5;
+ this.buttonStartClient.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.buttonStartClient.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonStartClient.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonStartClient.ButtonImageAutoSize = true;
+ this.buttonStartClient.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonStartClient.ButtonText = "Start";
+ this.buttonStartClient.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonStartClient.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.buttonStartClient.GroupID = 0;
+ this.buttonStartClient.ImageDisable = null;
+ this.buttonStartClient.ImageDown = null;
+ this.buttonStartClient.ImageUp = null;
+ this.buttonStartClient.Location = new System.Drawing.Point(89, 160);
+ this.buttonStartClient.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonStartClient.Name = "buttonStartClient";
+ this.buttonStartClient.NestedClickEventPrevent = false;
+ this.buttonStartClient.OutlinePixel = 2;
+ this.buttonStartClient.OverlapOptimize = true;
+ this.buttonStartClient.RepeatInterval = 200;
+ this.buttonStartClient.RepeatIntervalAccelerate = null;
+ this.buttonStartClient.RoundSize = 15;
+ this.buttonStartClient.SafeInterval = 200;
+ this.buttonStartClient.Size = new System.Drawing.Size(100, 35);
+ this.buttonStartClient.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonStartClient.TabIndex = 240;
+ this.buttonStartClient.Text = null;
+ this.buttonStartClient.TextColor = System.Drawing.Color.White;
+ this.buttonStartClient.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonStartClient.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonStartClient.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonStartClient.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonStartClient.Click += new System.EventHandler(this.buttonStartClient_Click);
+ //
+ // labelHostIP4
+ //
+ this.labelHostIP4.BackGround = null;
+ this.labelHostIP4.BackGroundColor = System.Drawing.Color.White;
+ this.labelHostIP4.BorderColor = System.Drawing.Color.Black;
+ this.labelHostIP4.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelHostIP4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelHostIP4.LineSpacing = 0F;
+ this.labelHostIP4.Location = new System.Drawing.Point(321, 88);
+ this.labelHostIP4.Name = "labelHostIP4";
+ this.labelHostIP4.OverlapOptimize = true;
+ this.labelHostIP4.PasswordChar = '\0';
+ this.labelHostIP4.Radius = 3;
+ this.labelHostIP4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelHostIP4.Size = new System.Drawing.Size(50, 28);
+ this.labelHostIP4.TabIndex = 242;
+ this.labelHostIP4.Text = "100";
+ this.labelHostIP4.TextColor = System.Drawing.Color.Black;
+ this.labelHostIP4.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelHostIP4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelHostIP4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelHostIP4.Wordwrap = false;
+ this.labelHostIP4.Click += new System.EventHandler(this.labelHostIP4_Click);
+ //
+ // labelHostIP3
+ //
+ this.labelHostIP3.BackGround = null;
+ this.labelHostIP3.BackGroundColor = System.Drawing.Color.White;
+ this.labelHostIP3.BorderColor = System.Drawing.Color.Black;
+ this.labelHostIP3.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelHostIP3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelHostIP3.LineSpacing = 0F;
+ this.labelHostIP3.Location = new System.Drawing.Point(265, 88);
+ this.labelHostIP3.Name = "labelHostIP3";
+ this.labelHostIP3.OverlapOptimize = true;
+ this.labelHostIP3.PasswordChar = '\0';
+ this.labelHostIP3.Radius = 3;
+ this.labelHostIP3.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelHostIP3.Size = new System.Drawing.Size(50, 28);
+ this.labelHostIP3.TabIndex = 241;
+ this.labelHostIP3.Text = "100";
+ this.labelHostIP3.TextColor = System.Drawing.Color.Black;
+ this.labelHostIP3.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelHostIP3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelHostIP3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelHostIP3.Wordwrap = false;
+ this.labelHostIP3.Click += new System.EventHandler(this.labelHostIP3_Click);
+ //
+ // labelHostIP2
+ //
+ this.labelHostIP2.BackGround = null;
+ this.labelHostIP2.BackGroundColor = System.Drawing.Color.White;
+ this.labelHostIP2.BorderColor = System.Drawing.Color.Black;
+ this.labelHostIP2.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelHostIP2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelHostIP2.LineSpacing = 0F;
+ this.labelHostIP2.Location = new System.Drawing.Point(209, 88);
+ this.labelHostIP2.Name = "labelHostIP2";
+ this.labelHostIP2.OverlapOptimize = true;
+ this.labelHostIP2.PasswordChar = '\0';
+ this.labelHostIP2.Radius = 3;
+ this.labelHostIP2.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelHostIP2.Size = new System.Drawing.Size(50, 28);
+ this.labelHostIP2.TabIndex = 240;
+ this.labelHostIP2.Text = "100";
+ this.labelHostIP2.TextColor = System.Drawing.Color.Black;
+ this.labelHostIP2.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelHostIP2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelHostIP2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelHostIP2.Wordwrap = false;
+ this.labelHostIP2.Click += new System.EventHandler(this.labelHostIP2_Click);
+ //
+ // labelHostIP1
+ //
+ this.labelHostIP1.BackGround = null;
+ this.labelHostIP1.BackGroundColor = System.Drawing.Color.White;
+ this.labelHostIP1.BorderColor = System.Drawing.Color.Black;
+ this.labelHostIP1.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelHostIP1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelHostIP1.LineSpacing = 0F;
+ this.labelHostIP1.Location = new System.Drawing.Point(153, 88);
+ this.labelHostIP1.Name = "labelHostIP1";
+ this.labelHostIP1.OverlapOptimize = true;
+ this.labelHostIP1.PasswordChar = '\0';
+ this.labelHostIP1.Radius = 3;
+ this.labelHostIP1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelHostIP1.Size = new System.Drawing.Size(50, 28);
+ this.labelHostIP1.TabIndex = 239;
+ this.labelHostIP1.Text = "100";
+ this.labelHostIP1.TextColor = System.Drawing.Color.Black;
+ this.labelHostIP1.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelHostIP1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelHostIP1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelHostIP1.Wordwrap = false;
+ this.labelHostIP1.Click += new System.EventHandler(this.labelHostIP1_Click);
+ //
+ // labelClientStatus
+ //
+ this.labelClientStatus.BackGround = null;
+ this.labelClientStatus.BackGroundColor = System.Drawing.Color.LightGray;
+ this.labelClientStatus.BorderColor = System.Drawing.Color.Black;
+ this.labelClientStatus.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelClientStatus.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.labelClientStatus.LineSpacing = 0F;
+ this.labelClientStatus.Location = new System.Drawing.Point(153, 54);
+ this.labelClientStatus.Name = "labelClientStatus";
+ this.labelClientStatus.OverlapOptimize = true;
+ this.labelClientStatus.PasswordChar = '\0';
+ this.labelClientStatus.Radius = 3;
+ this.labelClientStatus.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelClientStatus.Size = new System.Drawing.Size(218, 28);
+ this.labelClientStatus.TabIndex = 238;
+ this.labelClientStatus.Text = ">Disconnected Server";
+ this.labelClientStatus.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelClientStatus.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelClientStatus.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelClientStatus.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelClientStatus.Wordwrap = false;
+ //
+ // smartLabel7
+ //
+ this.smartLabel7.BackGround = null;
+ this.smartLabel7.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel7.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel7.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel7.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel7.ForeColor = System.Drawing.Color.Red;
+ this.smartLabel7.LineSpacing = 0F;
+ this.smartLabel7.Location = new System.Drawing.Point(17, 54);
+ this.smartLabel7.Name = "smartLabel7";
+ this.smartLabel7.OverlapOptimize = true;
+ this.smartLabel7.PasswordChar = '\0';
+ this.smartLabel7.Radius = 3;
+ this.smartLabel7.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel7.Size = new System.Drawing.Size(130, 28);
+ this.smartLabel7.TabIndex = 237;
+ this.smartLabel7.Text = "Status";
+ this.smartLabel7.TextColor = System.Drawing.Color.White;
+ this.smartLabel7.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel7.Wordwrap = false;
+ //
+ // smartLabel8
+ //
+ this.smartLabel8.BackGround = null;
+ this.smartLabel8.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel8.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel8.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel8.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel8.ForeColor = System.Drawing.Color.Red;
+ this.smartLabel8.LineSpacing = 0F;
+ this.smartLabel8.Location = new System.Drawing.Point(17, 88);
+ this.smartLabel8.Name = "smartLabel8";
+ this.smartLabel8.OverlapOptimize = true;
+ this.smartLabel8.PasswordChar = '\0';
+ this.smartLabel8.Radius = 3;
+ this.smartLabel8.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel8.Size = new System.Drawing.Size(130, 28);
+ this.smartLabel8.TabIndex = 236;
+ this.smartLabel8.Text = "Server IP";
+ this.smartLabel8.TextColor = System.Drawing.Color.White;
+ this.smartLabel8.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel8.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel8.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel8.Wordwrap = false;
+ //
+ // smartLabel9
+ //
+ this.smartLabel9.BackGround = null;
+ this.smartLabel9.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel9.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel9.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel9.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel9.ForeColor = System.Drawing.Color.White;
+ this.smartLabel9.LineSpacing = 0F;
+ this.smartLabel9.Location = new System.Drawing.Point(17, 122);
+ this.smartLabel9.Name = "smartLabel9";
+ this.smartLabel9.OverlapOptimize = true;
+ this.smartLabel9.PasswordChar = '\0';
+ this.smartLabel9.Radius = 3;
+ this.smartLabel9.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel9.Size = new System.Drawing.Size(130, 28);
+ this.smartLabel9.TabIndex = 235;
+ this.smartLabel9.Text = "Server Port";
+ this.smartLabel9.TextColor = System.Drawing.Color.White;
+ this.smartLabel9.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel9.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel9.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel9.Wordwrap = false;
+ //
+ // smartGroupBox4
+ //
+ this.smartGroupBox4.BackGround = null;
+ this.smartGroupBox4.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartGroupBox4.BackImage = null;
+ this.smartGroupBox4.Controls.Add(this.buttonSaveServer);
+ this.smartGroupBox4.Controls.Add(this.buttonStopServer);
+ this.smartGroupBox4.Controls.Add(this.buttonStartServer);
+ this.smartGroupBox4.Controls.Add(this.labelLocalPort);
+ this.smartGroupBox4.Controls.Add(this.labelConnectedIP);
+ this.smartGroupBox4.Controls.Add(this.labelServerStatus);
+ this.smartGroupBox4.Controls.Add(this.smartLabel6);
+ this.smartGroupBox4.Controls.Add(this.smartLabel2);
+ this.smartGroupBox4.Controls.Add(this.smartLabel3);
+ this.smartGroupBox4.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
+ this.smartGroupBox4.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.smartGroupBox4.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartGroupBox4.FrameLineThickness = 2;
+ this.smartGroupBox4.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.smartGroupBox4.HeaderHeightOffset = 12;
+ this.smartGroupBox4.Location = new System.Drawing.Point(67, 201);
+ this.smartGroupBox4.Name = "smartGroupBox4";
+ this.smartGroupBox4.RoundRadius = 5;
+ this.smartGroupBox4.Size = new System.Drawing.Size(384, 206);
+ this.smartGroupBox4.TabIndex = 96;
+ this.smartGroupBox4.Text = "Server";
+ this.smartGroupBox4.TextColor = System.Drawing.Color.White;
+ //
+ // buttonSaveServer
+ //
+ this.buttonSaveServer.BackGround = this.smartGroupBox4;
+ this.buttonSaveServer.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.buttonSaveServer.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonSaveServer.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonSaveServer.ButtonImageAutoSize = true;
+ this.buttonSaveServer.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonSaveServer.ButtonText = "Save";
+ this.buttonSaveServer.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonSaveServer.GroupID = 0;
+ this.buttonSaveServer.ImageDisable = null;
+ this.buttonSaveServer.ImageDown = null;
+ this.buttonSaveServer.ImageUp = null;
+ this.buttonSaveServer.Location = new System.Drawing.Point(317, 5);
+ this.buttonSaveServer.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonSaveServer.Name = "buttonSaveServer";
+ this.buttonSaveServer.NestedClickEventPrevent = false;
+ this.buttonSaveServer.OutlinePixel = 2;
+ this.buttonSaveServer.OverlapOptimize = true;
+ this.buttonSaveServer.RepeatInterval = 200;
+ this.buttonSaveServer.RepeatIntervalAccelerate = null;
+ this.buttonSaveServer.RoundSize = 10;
+ this.buttonSaveServer.SafeInterval = 200;
+ this.buttonSaveServer.Size = new System.Drawing.Size(62, 29);
+ this.buttonSaveServer.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonSaveServer.TabIndex = 249;
+ this.buttonSaveServer.Text = null;
+ this.buttonSaveServer.TextColor = System.Drawing.Color.White;
+ this.buttonSaveServer.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonSaveServer.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonSaveServer.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonSaveServer.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonSaveServer.Visible = false;
+ this.buttonSaveServer.Click += new System.EventHandler(this.buttonSaveServer_Click);
+ //
+ // buttonStopServer
+ //
+ this.buttonStopServer.BackGround = this.smartGroupBox4;
+ this.buttonStopServer.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.buttonStopServer.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonStopServer.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonStopServer.ButtonImageAutoSize = true;
+ this.buttonStopServer.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonStopServer.ButtonText = "Stop";
+ this.buttonStopServer.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonStopServer.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.buttonStopServer.GroupID = 0;
+ this.buttonStopServer.ImageDisable = null;
+ this.buttonStopServer.ImageDown = null;
+ this.buttonStopServer.ImageUp = null;
+ this.buttonStopServer.Location = new System.Drawing.Point(209, 160);
+ this.buttonStopServer.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonStopServer.Name = "buttonStopServer";
+ this.buttonStopServer.NestedClickEventPrevent = false;
+ this.buttonStopServer.OutlinePixel = 2;
+ this.buttonStopServer.OverlapOptimize = true;
+ this.buttonStopServer.RepeatInterval = 200;
+ this.buttonStopServer.RepeatIntervalAccelerate = null;
+ this.buttonStopServer.RoundSize = 15;
+ this.buttonStopServer.SafeInterval = 200;
+ this.buttonStopServer.Size = new System.Drawing.Size(100, 35);
+ this.buttonStopServer.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonStopServer.TabIndex = 239;
+ this.buttonStopServer.Text = null;
+ this.buttonStopServer.TextColor = System.Drawing.Color.White;
+ this.buttonStopServer.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonStopServer.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonStopServer.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonStopServer.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonStopServer.Click += new System.EventHandler(this.buttonStopServer_Click);
+ //
+ // buttonStartServer
+ //
+ this.buttonStartServer.BackGround = this.smartGroupBox4;
+ this.buttonStartServer.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.buttonStartServer.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonStartServer.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonStartServer.ButtonImageAutoSize = true;
+ this.buttonStartServer.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonStartServer.ButtonText = "Start";
+ this.buttonStartServer.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonStartServer.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.buttonStartServer.GroupID = 0;
+ this.buttonStartServer.ImageDisable = null;
+ this.buttonStartServer.ImageDown = null;
+ this.buttonStartServer.ImageUp = null;
+ this.buttonStartServer.Location = new System.Drawing.Point(88, 160);
+ this.buttonStartServer.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonStartServer.Name = "buttonStartServer";
+ this.buttonStartServer.NestedClickEventPrevent = false;
+ this.buttonStartServer.OutlinePixel = 2;
+ this.buttonStartServer.OverlapOptimize = true;
+ this.buttonStartServer.RepeatInterval = 200;
+ this.buttonStartServer.RepeatIntervalAccelerate = null;
+ this.buttonStartServer.RoundSize = 15;
+ this.buttonStartServer.SafeInterval = 200;
+ this.buttonStartServer.Size = new System.Drawing.Size(100, 35);
+ this.buttonStartServer.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonStartServer.TabIndex = 238;
+ this.buttonStartServer.Text = null;
+ this.buttonStartServer.TextColor = System.Drawing.Color.White;
+ this.buttonStartServer.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonStartServer.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonStartServer.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonStartServer.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonStartServer.Click += new System.EventHandler(this.buttonStartServer_Click);
+ //
+ // labelLocalPort
+ //
+ this.labelLocalPort.BackGround = null;
+ this.labelLocalPort.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalPort.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalPort.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalPort.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalPort.LineSpacing = 0F;
+ this.labelLocalPort.Location = new System.Drawing.Point(153, 122);
+ this.labelLocalPort.Name = "labelLocalPort";
+ this.labelLocalPort.OverlapOptimize = true;
+ this.labelLocalPort.PasswordChar = '\0';
+ this.labelLocalPort.Radius = 3;
+ this.labelLocalPort.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalPort.Size = new System.Drawing.Size(80, 28);
+ this.labelLocalPort.TabIndex = 237;
+ this.labelLocalPort.Text = "100";
+ this.labelLocalPort.TextColor = System.Drawing.Color.Black;
+ this.labelLocalPort.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalPort.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalPort.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalPort.Wordwrap = false;
+ this.labelLocalPort.Click += new System.EventHandler(this.labelLocalPort_Click);
+ //
+ // labelConnectedIP
+ //
+ this.labelConnectedIP.BackGround = null;
+ this.labelConnectedIP.BackGroundColor = System.Drawing.Color.LightGray;
+ this.labelConnectedIP.BorderColor = System.Drawing.Color.Black;
+ this.labelConnectedIP.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelConnectedIP.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.labelConnectedIP.LineSpacing = 0F;
+ this.labelConnectedIP.Location = new System.Drawing.Point(153, 88);
+ this.labelConnectedIP.Name = "labelConnectedIP";
+ this.labelConnectedIP.OverlapOptimize = true;
+ this.labelConnectedIP.PasswordChar = '\0';
+ this.labelConnectedIP.Radius = 3;
+ this.labelConnectedIP.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelConnectedIP.Size = new System.Drawing.Size(218, 28);
+ this.labelConnectedIP.TabIndex = 236;
+ this.labelConnectedIP.Text = "192.168.0.1";
+ this.labelConnectedIP.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelConnectedIP.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelConnectedIP.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelConnectedIP.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelConnectedIP.Wordwrap = false;
+ //
+ // labelServerStatus
+ //
+ this.labelServerStatus.BackGround = null;
+ this.labelServerStatus.BackGroundColor = System.Drawing.Color.LightGray;
+ this.labelServerStatus.BorderColor = System.Drawing.Color.Black;
+ this.labelServerStatus.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelServerStatus.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.labelServerStatus.LineSpacing = 0F;
+ this.labelServerStatus.Location = new System.Drawing.Point(153, 54);
+ this.labelServerStatus.Name = "labelServerStatus";
+ this.labelServerStatus.OverlapOptimize = true;
+ this.labelServerStatus.PasswordChar = '\0';
+ this.labelServerStatus.Radius = 3;
+ this.labelServerStatus.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelServerStatus.Size = new System.Drawing.Size(218, 28);
+ this.labelServerStatus.TabIndex = 235;
+ this.labelServerStatus.Text = ">Start";
+ this.labelServerStatus.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelServerStatus.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelServerStatus.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelServerStatus.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelServerStatus.Wordwrap = false;
+ //
+ // smartLabel6
+ //
+ this.smartLabel6.BackGround = null;
+ this.smartLabel6.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel6.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel6.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel6.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel6.ForeColor = System.Drawing.Color.Red;
+ this.smartLabel6.LineSpacing = 0F;
+ this.smartLabel6.Location = new System.Drawing.Point(17, 54);
+ this.smartLabel6.Name = "smartLabel6";
+ this.smartLabel6.OverlapOptimize = true;
+ this.smartLabel6.PasswordChar = '\0';
+ this.smartLabel6.Radius = 3;
+ this.smartLabel6.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel6.Size = new System.Drawing.Size(130, 28);
+ this.smartLabel6.TabIndex = 234;
+ this.smartLabel6.Text = "Status";
+ this.smartLabel6.TextColor = System.Drawing.Color.White;
+ this.smartLabel6.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel6.Wordwrap = false;
+ //
+ // smartLabel2
+ //
+ this.smartLabel2.BackGround = null;
+ this.smartLabel2.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel2.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel2.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel2.ForeColor = System.Drawing.Color.Red;
+ this.smartLabel2.LineSpacing = 0F;
+ this.smartLabel2.Location = new System.Drawing.Point(17, 88);
+ this.smartLabel2.Name = "smartLabel2";
+ this.smartLabel2.OverlapOptimize = true;
+ this.smartLabel2.PasswordChar = '\0';
+ this.smartLabel2.Radius = 3;
+ this.smartLabel2.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel2.Size = new System.Drawing.Size(130, 28);
+ this.smartLabel2.TabIndex = 233;
+ this.smartLabel2.Text = "Connected IP";
+ this.smartLabel2.TextColor = System.Drawing.Color.White;
+ this.smartLabel2.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel2.Wordwrap = false;
+ //
+ // smartLabel3
+ //
+ this.smartLabel3.BackGround = null;
+ this.smartLabel3.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel3.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel3.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel3.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel3.ForeColor = System.Drawing.Color.White;
+ this.smartLabel3.LineSpacing = 0F;
+ this.smartLabel3.Location = new System.Drawing.Point(17, 122);
+ this.smartLabel3.Name = "smartLabel3";
+ this.smartLabel3.OverlapOptimize = true;
+ this.smartLabel3.PasswordChar = '\0';
+ this.smartLabel3.Radius = 3;
+ this.smartLabel3.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel3.Size = new System.Drawing.Size(130, 28);
+ this.smartLabel3.TabIndex = 232;
+ this.smartLabel3.Text = "Local Port";
+ this.smartLabel3.TextColor = System.Drawing.Color.White;
+ this.smartLabel3.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel3.Wordwrap = false;
+ //
+ // smartGroupBox3
+ //
+ this.smartGroupBox3.BackGround = null;
+ this.smartGroupBox3.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartGroupBox3.BackImage = null;
+ this.smartGroupBox3.Controls.Add(this.smartLabel5);
+ this.smartGroupBox3.Controls.Add(this.smartLabel4);
+ this.smartGroupBox3.Controls.Add(this.labelMACAddress6);
+ this.smartGroupBox3.Controls.Add(this.labelMACAddress5);
+ this.smartGroupBox3.Controls.Add(this.labelMACAddress4);
+ this.smartGroupBox3.Controls.Add(this.labelMACAddress1);
+ this.smartGroupBox3.Controls.Add(this.labelTitleMACAddress);
+ this.smartGroupBox3.Controls.Add(this.panel2);
+ this.smartGroupBox3.Controls.Add(this.labelTitleIPConfiguration);
+ this.smartGroupBox3.Controls.Add(this.labelLocalSubnetMask4);
+ this.smartGroupBox3.Controls.Add(this.labelLocalSubnetMask3);
+ this.smartGroupBox3.Controls.Add(this.labelLocalSubnetMask2);
+ this.smartGroupBox3.Controls.Add(this.labelLocalSubnetMask1);
+ this.smartGroupBox3.Controls.Add(this.labelTitleSubnetMask);
+ this.smartGroupBox3.Controls.Add(this.labelLocalGateway4);
+ this.smartGroupBox3.Controls.Add(this.labelLocalGateway3);
+ this.smartGroupBox3.Controls.Add(this.labelLocalGateway2);
+ this.smartGroupBox3.Controls.Add(this.labelLocalGateway1);
+ this.smartGroupBox3.Controls.Add(this.labelTitleGateway);
+ this.smartGroupBox3.Controls.Add(this.labelLocalIP4);
+ this.smartGroupBox3.Controls.Add(this.labelLocalIP3);
+ this.smartGroupBox3.Controls.Add(this.labelLocalIP2);
+ this.smartGroupBox3.Controls.Add(this.labelLocalIP1);
+ this.smartGroupBox3.Controls.Add(this.labelTitleIPAddress);
+ this.smartGroupBox3.Controls.Add(this.buttonSaveLocal);
+ this.smartGroupBox3.Controls.Add(this.labelHelp);
+ this.smartGroupBox3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
+ this.smartGroupBox3.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.smartGroupBox3.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartGroupBox3.FrameLineThickness = 2;
+ this.smartGroupBox3.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.smartGroupBox3.HeaderHeightOffset = 12;
+ this.smartGroupBox3.Location = new System.Drawing.Point(67, 414);
+ this.smartGroupBox3.Name = "smartGroupBox3";
+ this.smartGroupBox3.RoundRadius = 5;
+ this.smartGroupBox3.Size = new System.Drawing.Size(481, 237);
+ this.smartGroupBox3.TabIndex = 95;
+ this.smartGroupBox3.Text = "Local Settings";
+ this.smartGroupBox3.TextColor = System.Drawing.Color.White;
+ //
+ // smartLabel5
+ //
+ this.smartLabel5.BackGround = null;
+ this.smartLabel5.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel5.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel5.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel5.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.smartLabel5.ForeColor = System.Drawing.Color.White;
+ this.smartLabel5.LineSpacing = 0F;
+ this.smartLabel5.Location = new System.Drawing.Point(410, 193);
+ this.smartLabel5.Name = "smartLabel5";
+ this.smartLabel5.OverlapOptimize = true;
+ this.smartLabel5.PasswordChar = '\0';
+ this.smartLabel5.Radius = 3;
+ this.smartLabel5.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel5.Size = new System.Drawing.Size(10, 28);
+ this.smartLabel5.TabIndex = 247;
+ this.smartLabel5.Text = ":";
+ this.smartLabel5.TextColor = System.Drawing.Color.White;
+ this.smartLabel5.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.smartLabel5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel5.Wordwrap = false;
+ //
+ // smartLabel4
+ //
+ this.smartLabel4.BackGround = null;
+ this.smartLabel4.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel4.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel4.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.smartLabel4.ForeColor = System.Drawing.Color.White;
+ this.smartLabel4.LineSpacing = 0F;
+ this.smartLabel4.Location = new System.Drawing.Point(354, 193);
+ this.smartLabel4.Name = "smartLabel4";
+ this.smartLabel4.OverlapOptimize = true;
+ this.smartLabel4.PasswordChar = '\0';
+ this.smartLabel4.Radius = 3;
+ this.smartLabel4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel4.Size = new System.Drawing.Size(10, 28);
+ this.smartLabel4.TabIndex = 246;
+ this.smartLabel4.Text = ":";
+ this.smartLabel4.TextColor = System.Drawing.Color.White;
+ this.smartLabel4.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.smartLabel4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel4.Wordwrap = false;
+ //
+ // labelMACAddress6
+ //
+ this.labelMACAddress6.BackGround = null;
+ this.labelMACAddress6.BackGroundColor = System.Drawing.Color.White;
+ this.labelMACAddress6.BorderColor = System.Drawing.Color.Black;
+ this.labelMACAddress6.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelMACAddress6.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelMACAddress6.LineSpacing = 0F;
+ this.labelMACAddress6.Location = new System.Drawing.Point(423, 193);
+ this.labelMACAddress6.Name = "labelMACAddress6";
+ this.labelMACAddress6.OverlapOptimize = true;
+ this.labelMACAddress6.PasswordChar = '\0';
+ this.labelMACAddress6.Radius = 3;
+ this.labelMACAddress6.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelMACAddress6.Size = new System.Drawing.Size(40, 28);
+ this.labelMACAddress6.TabIndex = 245;
+ this.labelMACAddress6.Text = "AA";
+ this.labelMACAddress6.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelMACAddress6.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelMACAddress6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelMACAddress6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelMACAddress6.Wordwrap = false;
+ this.labelMACAddress6.Click += new System.EventHandler(this.labelMACAddress_Click);
+ //
+ // labelMACAddress5
+ //
+ this.labelMACAddress5.BackGround = null;
+ this.labelMACAddress5.BackGroundColor = System.Drawing.Color.White;
+ this.labelMACAddress5.BorderColor = System.Drawing.Color.Black;
+ this.labelMACAddress5.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelMACAddress5.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelMACAddress5.LineSpacing = 0F;
+ this.labelMACAddress5.Location = new System.Drawing.Point(367, 193);
+ this.labelMACAddress5.Name = "labelMACAddress5";
+ this.labelMACAddress5.OverlapOptimize = true;
+ this.labelMACAddress5.PasswordChar = '\0';
+ this.labelMACAddress5.Radius = 3;
+ this.labelMACAddress5.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelMACAddress5.Size = new System.Drawing.Size(40, 28);
+ this.labelMACAddress5.TabIndex = 244;
+ this.labelMACAddress5.Text = "AA";
+ this.labelMACAddress5.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelMACAddress5.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelMACAddress5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelMACAddress5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelMACAddress5.Wordwrap = false;
+ this.labelMACAddress5.Click += new System.EventHandler(this.labelMACAddress_Click);
+ //
+ // labelMACAddress4
+ //
+ this.labelMACAddress4.BackGround = null;
+ this.labelMACAddress4.BackGroundColor = System.Drawing.Color.White;
+ this.labelMACAddress4.BorderColor = System.Drawing.Color.Black;
+ this.labelMACAddress4.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelMACAddress4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelMACAddress4.LineSpacing = 0F;
+ this.labelMACAddress4.Location = new System.Drawing.Point(311, 193);
+ this.labelMACAddress4.Name = "labelMACAddress4";
+ this.labelMACAddress4.OverlapOptimize = true;
+ this.labelMACAddress4.PasswordChar = '\0';
+ this.labelMACAddress4.Radius = 3;
+ this.labelMACAddress4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelMACAddress4.Size = new System.Drawing.Size(40, 28);
+ this.labelMACAddress4.TabIndex = 243;
+ this.labelMACAddress4.Text = "AA";
+ this.labelMACAddress4.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelMACAddress4.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelMACAddress4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelMACAddress4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelMACAddress4.Wordwrap = false;
+ this.labelMACAddress4.Click += new System.EventHandler(this.labelMACAddress_Click);
+ //
+ // labelMACAddress1
+ //
+ this.labelMACAddress1.BackGround = null;
+ this.labelMACAddress1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelMACAddress1.BorderColor = System.Drawing.Color.Black;
+ this.labelMACAddress1.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelMACAddress1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelMACAddress1.ForeColor = System.Drawing.Color.White;
+ this.labelMACAddress1.LineSpacing = 0F;
+ this.labelMACAddress1.Location = new System.Drawing.Point(197, 193);
+ this.labelMACAddress1.Name = "labelMACAddress1";
+ this.labelMACAddress1.OverlapOptimize = true;
+ this.labelMACAddress1.PasswordChar = '\0';
+ this.labelMACAddress1.Radius = 3;
+ this.labelMACAddress1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelMACAddress1.Size = new System.Drawing.Size(112, 28);
+ this.labelMACAddress1.TabIndex = 242;
+ this.labelMACAddress1.Text = "AA:AA:AA:";
+ this.labelMACAddress1.TextColor = System.Drawing.Color.White;
+ this.labelMACAddress1.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelMACAddress1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelMACAddress1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelMACAddress1.Wordwrap = false;
+ //
+ // labelTitleMACAddress
+ //
+ this.labelTitleMACAddress.BackGround = null;
+ this.labelTitleMACAddress.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleMACAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleMACAddress.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleMACAddress.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleMACAddress.ForeColor = System.Drawing.Color.Red;
+ this.labelTitleMACAddress.LineSpacing = 0F;
+ this.labelTitleMACAddress.Location = new System.Drawing.Point(17, 193);
+ this.labelTitleMACAddress.Name = "labelTitleMACAddress";
+ this.labelTitleMACAddress.OverlapOptimize = true;
+ this.labelTitleMACAddress.PasswordChar = '\0';
+ this.labelTitleMACAddress.Radius = 3;
+ this.labelTitleMACAddress.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleMACAddress.Size = new System.Drawing.Size(174, 28);
+ this.labelTitleMACAddress.TabIndex = 241;
+ this.labelTitleMACAddress.Text = "MAC Address";
+ this.labelTitleMACAddress.TextColor = System.Drawing.Color.White;
+ this.labelTitleMACAddress.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleMACAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleMACAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleMACAddress.Wordwrap = false;
+ //
+ // panel2
+ //
+ this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.panel2.Controls.Add(this.radioButtonLocalIpStatic);
+ this.panel2.Controls.Add(this.radioButtonLocalIpDHCP);
+ this.panel2.Location = new System.Drawing.Point(197, 53);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(218, 32);
+ //
+ // radioButtonLocalIpStatic
+ //
+ this.radioButtonLocalIpStatic.BackGround = null;
+ this.radioButtonLocalIpStatic.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.radioButtonLocalIpStatic.Checked = false;
+ this.radioButtonLocalIpStatic.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.radioButtonLocalIpStatic.ForeColor = System.Drawing.Color.White;
+ this.radioButtonLocalIpStatic.GroupID = 0;
+ this.radioButtonLocalIpStatic.ImageCheckRadioButton = null;
+ this.radioButtonLocalIpStatic.ImageUnCheckRadioButton = null;
+ this.radioButtonLocalIpStatic.Location = new System.Drawing.Point(109, 3);
+ this.radioButtonLocalIpStatic.Name = "radioButtonLocalIpStatic";
+ this.radioButtonLocalIpStatic.OutputOnly = false;
+ this.radioButtonLocalIpStatic.OverlapOptimize = true;
+ this.radioButtonLocalIpStatic.RadioBackColor = System.Drawing.Color.White;
+ this.radioButtonLocalIpStatic.RadioCheckColor = System.Drawing.Color.Green;
+ this.radioButtonLocalIpStatic.RadioOutlineColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.radioButtonLocalIpStatic.RadioSymbolSize = 14;
+ this.radioButtonLocalIpStatic.Shadow = false;
+ this.radioButtonLocalIpStatic.Size = new System.Drawing.Size(100, 25);
+ this.radioButtonLocalIpStatic.TabIndex = 0;
+ this.radioButtonLocalIpStatic.Text = "Static";
+ this.radioButtonLocalIpStatic.TextColor = System.Drawing.Color.White;
+ this.radioButtonLocalIpStatic.TextColorDisable = System.Drawing.Color.Gray;
+ this.radioButtonLocalIpStatic.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle;
+ this.radioButtonLocalIpStatic.Click += new System.EventHandler(this.radioButtonLocalIpDHCP_Click);
+ //
+ // radioButtonLocalIpDHCP
+ //
+ this.radioButtonLocalIpDHCP.BackGround = null;
+ this.radioButtonLocalIpDHCP.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.radioButtonLocalIpDHCP.Checked = false;
+ this.radioButtonLocalIpDHCP.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.radioButtonLocalIpDHCP.ForeColor = System.Drawing.Color.White;
+ this.radioButtonLocalIpDHCP.GroupID = 0;
+ this.radioButtonLocalIpDHCP.ImageCheckRadioButton = null;
+ this.radioButtonLocalIpDHCP.ImageUnCheckRadioButton = null;
+ this.radioButtonLocalIpDHCP.Location = new System.Drawing.Point(3, 3);
+ this.radioButtonLocalIpDHCP.Name = "radioButtonLocalIpDHCP";
+ this.radioButtonLocalIpDHCP.OutputOnly = false;
+ this.radioButtonLocalIpDHCP.OverlapOptimize = true;
+ this.radioButtonLocalIpDHCP.RadioBackColor = System.Drawing.Color.White;
+ this.radioButtonLocalIpDHCP.RadioCheckColor = System.Drawing.Color.Green;
+ this.radioButtonLocalIpDHCP.RadioOutlineColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.radioButtonLocalIpDHCP.RadioSymbolSize = 14;
+ this.radioButtonLocalIpDHCP.Shadow = false;
+ this.radioButtonLocalIpDHCP.Size = new System.Drawing.Size(100, 25);
+ this.radioButtonLocalIpDHCP.TabIndex = 0;
+ this.radioButtonLocalIpDHCP.Text = "DHCP";
+ this.radioButtonLocalIpDHCP.TextColor = System.Drawing.Color.White;
+ this.radioButtonLocalIpDHCP.TextColorDisable = System.Drawing.Color.Gray;
+ this.radioButtonLocalIpDHCP.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle;
+ this.radioButtonLocalIpDHCP.Click += new System.EventHandler(this.radioButtonLocalIpDHCP_Click);
+ //
+ // labelTitleIPConfiguration
+ //
+ this.labelTitleIPConfiguration.BackGround = null;
+ this.labelTitleIPConfiguration.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleIPConfiguration.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleIPConfiguration.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleIPConfiguration.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleIPConfiguration.ForeColor = System.Drawing.Color.Red;
+ this.labelTitleIPConfiguration.LineSpacing = 0F;
+ this.labelTitleIPConfiguration.Location = new System.Drawing.Point(17, 57);
+ this.labelTitleIPConfiguration.Name = "labelTitleIPConfiguration";
+ this.labelTitleIPConfiguration.OverlapOptimize = true;
+ this.labelTitleIPConfiguration.PasswordChar = '\0';
+ this.labelTitleIPConfiguration.Radius = 3;
+ this.labelTitleIPConfiguration.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleIPConfiguration.Size = new System.Drawing.Size(174, 28);
+ this.labelTitleIPConfiguration.TabIndex = 231;
+ this.labelTitleIPConfiguration.Text = "IP Configuration";
+ this.labelTitleIPConfiguration.TextColor = System.Drawing.Color.White;
+ this.labelTitleIPConfiguration.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleIPConfiguration.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleIPConfiguration.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleIPConfiguration.Wordwrap = false;
+ //
+ // labelLocalSubnetMask4
+ //
+ this.labelLocalSubnetMask4.BackGround = null;
+ this.labelLocalSubnetMask4.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalSubnetMask4.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalSubnetMask4.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalSubnetMask4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalSubnetMask4.LineSpacing = 0F;
+ this.labelLocalSubnetMask4.Location = new System.Drawing.Point(365, 125);
+ this.labelLocalSubnetMask4.Name = "labelLocalSubnetMask4";
+ this.labelLocalSubnetMask4.OverlapOptimize = true;
+ this.labelLocalSubnetMask4.PasswordChar = '\0';
+ this.labelLocalSubnetMask4.Radius = 3;
+ this.labelLocalSubnetMask4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalSubnetMask4.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalSubnetMask4.TabIndex = 230;
+ this.labelLocalSubnetMask4.Text = "100";
+ this.labelLocalSubnetMask4.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalSubnetMask4.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalSubnetMask4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalSubnetMask4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalSubnetMask4.Wordwrap = false;
+ this.labelLocalSubnetMask4.Click += new System.EventHandler(this.labelLocalSubnetMask4_Click);
+ //
+ // labelLocalSubnetMask3
+ //
+ this.labelLocalSubnetMask3.BackGround = null;
+ this.labelLocalSubnetMask3.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalSubnetMask3.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalSubnetMask3.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalSubnetMask3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalSubnetMask3.LineSpacing = 0F;
+ this.labelLocalSubnetMask3.Location = new System.Drawing.Point(309, 125);
+ this.labelLocalSubnetMask3.Name = "labelLocalSubnetMask3";
+ this.labelLocalSubnetMask3.OverlapOptimize = true;
+ this.labelLocalSubnetMask3.PasswordChar = '\0';
+ this.labelLocalSubnetMask3.Radius = 3;
+ this.labelLocalSubnetMask3.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalSubnetMask3.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalSubnetMask3.TabIndex = 229;
+ this.labelLocalSubnetMask3.Text = "100";
+ this.labelLocalSubnetMask3.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalSubnetMask3.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalSubnetMask3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalSubnetMask3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalSubnetMask3.Wordwrap = false;
+ this.labelLocalSubnetMask3.Click += new System.EventHandler(this.labelLocalSubnetMask3_Click);
+ //
+ // labelLocalSubnetMask2
+ //
+ this.labelLocalSubnetMask2.BackGround = null;
+ this.labelLocalSubnetMask2.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalSubnetMask2.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalSubnetMask2.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalSubnetMask2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalSubnetMask2.LineSpacing = 0F;
+ this.labelLocalSubnetMask2.Location = new System.Drawing.Point(253, 125);
+ this.labelLocalSubnetMask2.Name = "labelLocalSubnetMask2";
+ this.labelLocalSubnetMask2.OverlapOptimize = true;
+ this.labelLocalSubnetMask2.PasswordChar = '\0';
+ this.labelLocalSubnetMask2.Radius = 3;
+ this.labelLocalSubnetMask2.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalSubnetMask2.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalSubnetMask2.TabIndex = 228;
+ this.labelLocalSubnetMask2.Text = "100";
+ this.labelLocalSubnetMask2.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalSubnetMask2.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalSubnetMask2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalSubnetMask2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalSubnetMask2.Wordwrap = false;
+ this.labelLocalSubnetMask2.Click += new System.EventHandler(this.labelLocalSubnetMask2_Click);
+ //
+ // labelLocalSubnetMask1
+ //
+ this.labelLocalSubnetMask1.BackGround = null;
+ this.labelLocalSubnetMask1.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalSubnetMask1.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalSubnetMask1.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalSubnetMask1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalSubnetMask1.LineSpacing = 0F;
+ this.labelLocalSubnetMask1.Location = new System.Drawing.Point(197, 125);
+ this.labelLocalSubnetMask1.Name = "labelLocalSubnetMask1";
+ this.labelLocalSubnetMask1.OverlapOptimize = true;
+ this.labelLocalSubnetMask1.PasswordChar = '\0';
+ this.labelLocalSubnetMask1.Radius = 3;
+ this.labelLocalSubnetMask1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalSubnetMask1.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalSubnetMask1.TabIndex = 227;
+ this.labelLocalSubnetMask1.Text = "100";
+ this.labelLocalSubnetMask1.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalSubnetMask1.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalSubnetMask1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalSubnetMask1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalSubnetMask1.Wordwrap = false;
+ this.labelLocalSubnetMask1.Click += new System.EventHandler(this.labelLocalSubnetMask1_Click);
+ //
+ // labelTitleSubnetMask
+ //
+ this.labelTitleSubnetMask.BackGround = null;
+ this.labelTitleSubnetMask.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleSubnetMask.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleSubnetMask.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleSubnetMask.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleSubnetMask.ForeColor = System.Drawing.Color.White;
+ this.labelTitleSubnetMask.LineSpacing = 0F;
+ this.labelTitleSubnetMask.Location = new System.Drawing.Point(17, 125);
+ this.labelTitleSubnetMask.Name = "labelTitleSubnetMask";
+ this.labelTitleSubnetMask.OverlapOptimize = true;
+ this.labelTitleSubnetMask.PasswordChar = '\0';
+ this.labelTitleSubnetMask.Radius = 3;
+ this.labelTitleSubnetMask.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleSubnetMask.Size = new System.Drawing.Size(174, 28);
+ this.labelTitleSubnetMask.TabIndex = 226;
+ this.labelTitleSubnetMask.Text = "Subnet mask";
+ this.labelTitleSubnetMask.TextColor = System.Drawing.Color.White;
+ this.labelTitleSubnetMask.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleSubnetMask.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleSubnetMask.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleSubnetMask.Wordwrap = false;
+ //
+ // labelLocalGateway4
+ //
+ this.labelLocalGateway4.BackGround = null;
+ this.labelLocalGateway4.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalGateway4.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalGateway4.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalGateway4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalGateway4.LineSpacing = 0F;
+ this.labelLocalGateway4.Location = new System.Drawing.Point(365, 159);
+ this.labelLocalGateway4.Name = "labelLocalGateway4";
+ this.labelLocalGateway4.OverlapOptimize = true;
+ this.labelLocalGateway4.PasswordChar = '\0';
+ this.labelLocalGateway4.Radius = 3;
+ this.labelLocalGateway4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalGateway4.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalGateway4.TabIndex = 225;
+ this.labelLocalGateway4.Text = "100";
+ this.labelLocalGateway4.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalGateway4.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalGateway4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalGateway4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalGateway4.Wordwrap = false;
+ this.labelLocalGateway4.Click += new System.EventHandler(this.labelLocalGateway4_Click);
+ //
+ // labelLocalGateway3
+ //
+ this.labelLocalGateway3.BackGround = null;
+ this.labelLocalGateway3.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalGateway3.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalGateway3.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalGateway3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalGateway3.LineSpacing = 0F;
+ this.labelLocalGateway3.Location = new System.Drawing.Point(309, 159);
+ this.labelLocalGateway3.Name = "labelLocalGateway3";
+ this.labelLocalGateway3.OverlapOptimize = true;
+ this.labelLocalGateway3.PasswordChar = '\0';
+ this.labelLocalGateway3.Radius = 3;
+ this.labelLocalGateway3.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalGateway3.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalGateway3.TabIndex = 224;
+ this.labelLocalGateway3.Text = "100";
+ this.labelLocalGateway3.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalGateway3.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalGateway3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalGateway3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalGateway3.Wordwrap = false;
+ this.labelLocalGateway3.Click += new System.EventHandler(this.labelLocalGateway3_Click);
+ //
+ // labelLocalGateway2
+ //
+ this.labelLocalGateway2.BackGround = null;
+ this.labelLocalGateway2.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalGateway2.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalGateway2.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalGateway2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalGateway2.LineSpacing = 0F;
+ this.labelLocalGateway2.Location = new System.Drawing.Point(253, 159);
+ this.labelLocalGateway2.Name = "labelLocalGateway2";
+ this.labelLocalGateway2.OverlapOptimize = true;
+ this.labelLocalGateway2.PasswordChar = '\0';
+ this.labelLocalGateway2.Radius = 3;
+ this.labelLocalGateway2.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalGateway2.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalGateway2.TabIndex = 223;
+ this.labelLocalGateway2.Text = "100";
+ this.labelLocalGateway2.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalGateway2.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalGateway2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalGateway2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalGateway2.Wordwrap = false;
+ this.labelLocalGateway2.Click += new System.EventHandler(this.labelLocalGateway2_Click);
+ //
+ // labelLocalGateway1
+ //
+ this.labelLocalGateway1.BackGround = null;
+ this.labelLocalGateway1.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalGateway1.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalGateway1.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalGateway1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalGateway1.LineSpacing = 0F;
+ this.labelLocalGateway1.Location = new System.Drawing.Point(197, 159);
+ this.labelLocalGateway1.Name = "labelLocalGateway1";
+ this.labelLocalGateway1.OverlapOptimize = true;
+ this.labelLocalGateway1.PasswordChar = '\0';
+ this.labelLocalGateway1.Radius = 3;
+ this.labelLocalGateway1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalGateway1.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalGateway1.TabIndex = 222;
+ this.labelLocalGateway1.Text = "100";
+ this.labelLocalGateway1.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalGateway1.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalGateway1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalGateway1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalGateway1.Wordwrap = false;
+ this.labelLocalGateway1.Click += new System.EventHandler(this.labelLocalGateway1_Click);
+ //
+ // labelTitleGateway
+ //
+ this.labelTitleGateway.BackGround = null;
+ this.labelTitleGateway.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleGateway.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleGateway.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleGateway.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleGateway.ForeColor = System.Drawing.Color.White;
+ this.labelTitleGateway.LineSpacing = 0F;
+ this.labelTitleGateway.Location = new System.Drawing.Point(17, 159);
+ this.labelTitleGateway.Name = "labelTitleGateway";
+ this.labelTitleGateway.OverlapOptimize = true;
+ this.labelTitleGateway.PasswordChar = '\0';
+ this.labelTitleGateway.Radius = 3;
+ this.labelTitleGateway.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleGateway.Size = new System.Drawing.Size(174, 28);
+ this.labelTitleGateway.TabIndex = 221;
+ this.labelTitleGateway.Text = "GateWay";
+ this.labelTitleGateway.TextColor = System.Drawing.Color.White;
+ this.labelTitleGateway.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleGateway.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleGateway.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleGateway.Wordwrap = false;
+ //
+ // labelLocalIP4
+ //
+ this.labelLocalIP4.BackGround = null;
+ this.labelLocalIP4.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalIP4.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalIP4.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalIP4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalIP4.LineSpacing = 0F;
+ this.labelLocalIP4.Location = new System.Drawing.Point(365, 91);
+ this.labelLocalIP4.Name = "labelLocalIP4";
+ this.labelLocalIP4.OverlapOptimize = true;
+ this.labelLocalIP4.PasswordChar = '\0';
+ this.labelLocalIP4.Radius = 3;
+ this.labelLocalIP4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalIP4.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalIP4.TabIndex = 220;
+ this.labelLocalIP4.Text = "100";
+ this.labelLocalIP4.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalIP4.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalIP4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalIP4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalIP4.Wordwrap = false;
+ this.labelLocalIP4.Click += new System.EventHandler(this.labelLocalIP4_Click);
+ //
+ // labelLocalIP3
+ //
+ this.labelLocalIP3.BackGround = null;
+ this.labelLocalIP3.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalIP3.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalIP3.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalIP3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalIP3.LineSpacing = 0F;
+ this.labelLocalIP3.Location = new System.Drawing.Point(309, 91);
+ this.labelLocalIP3.Name = "labelLocalIP3";
+ this.labelLocalIP3.OverlapOptimize = true;
+ this.labelLocalIP3.PasswordChar = '\0';
+ this.labelLocalIP3.Radius = 3;
+ this.labelLocalIP3.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalIP3.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalIP3.TabIndex = 219;
+ this.labelLocalIP3.Text = "100";
+ this.labelLocalIP3.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalIP3.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalIP3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalIP3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalIP3.Wordwrap = false;
+ this.labelLocalIP3.Click += new System.EventHandler(this.labelLocalIP3_Click);
+ //
+ // labelLocalIP2
+ //
+ this.labelLocalIP2.BackGround = null;
+ this.labelLocalIP2.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalIP2.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalIP2.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalIP2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalIP2.LineSpacing = 0F;
+ this.labelLocalIP2.Location = new System.Drawing.Point(253, 91);
+ this.labelLocalIP2.Name = "labelLocalIP2";
+ this.labelLocalIP2.OverlapOptimize = true;
+ this.labelLocalIP2.PasswordChar = '\0';
+ this.labelLocalIP2.Radius = 3;
+ this.labelLocalIP2.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalIP2.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalIP2.TabIndex = 218;
+ this.labelLocalIP2.Text = "100";
+ this.labelLocalIP2.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalIP2.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalIP2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalIP2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalIP2.Wordwrap = false;
+ this.labelLocalIP2.Click += new System.EventHandler(this.labelLocalIP2_Click);
+ //
+ // labelLocalIP1
+ //
+ this.labelLocalIP1.BackGround = null;
+ this.labelLocalIP1.BackGroundColor = System.Drawing.Color.White;
+ this.labelLocalIP1.BorderColor = System.Drawing.Color.Black;
+ this.labelLocalIP1.BorderStyle = SmartX.SmartLabel.BorderStyles.FixedSingle;
+ this.labelLocalIP1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold);
+ this.labelLocalIP1.LineSpacing = 0F;
+ this.labelLocalIP1.Location = new System.Drawing.Point(197, 91);
+ this.labelLocalIP1.Name = "labelLocalIP1";
+ this.labelLocalIP1.OverlapOptimize = true;
+ this.labelLocalIP1.PasswordChar = '\0';
+ this.labelLocalIP1.Radius = 3;
+ this.labelLocalIP1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelLocalIP1.Size = new System.Drawing.Size(50, 28);
+ this.labelLocalIP1.TabIndex = 217;
+ this.labelLocalIP1.Text = "100";
+ this.labelLocalIP1.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelLocalIP1.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelLocalIP1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelLocalIP1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelLocalIP1.Wordwrap = false;
+ this.labelLocalIP1.Click += new System.EventHandler(this.labelLocalIP1_Click);
+ //
+ // labelTitleIPAddress
+ //
+ this.labelTitleIPAddress.BackGround = null;
+ this.labelTitleIPAddress.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.labelTitleIPAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleIPAddress.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleIPAddress.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitleIPAddress.ForeColor = System.Drawing.Color.White;
+ this.labelTitleIPAddress.LineSpacing = 0F;
+ this.labelTitleIPAddress.Location = new System.Drawing.Point(17, 91);
+ this.labelTitleIPAddress.Name = "labelTitleIPAddress";
+ this.labelTitleIPAddress.OverlapOptimize = true;
+ this.labelTitleIPAddress.PasswordChar = '\0';
+ this.labelTitleIPAddress.Radius = 3;
+ this.labelTitleIPAddress.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleIPAddress.Size = new System.Drawing.Size(174, 28);
+ this.labelTitleIPAddress.TabIndex = 216;
+ this.labelTitleIPAddress.Text = "IP Address";
+ this.labelTitleIPAddress.TextColor = System.Drawing.Color.White;
+ this.labelTitleIPAddress.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleIPAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleIPAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleIPAddress.Wordwrap = false;
+ //
+ // buttonSaveLocal
+ //
+ this.buttonSaveLocal.BackGround = this.smartGroupBox3;
+ this.buttonSaveLocal.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.buttonSaveLocal.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonSaveLocal.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonSaveLocal.ButtonImageAutoSize = true;
+ this.buttonSaveLocal.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonSaveLocal.ButtonText = "Save";
+ this.buttonSaveLocal.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonSaveLocal.GroupID = 0;
+ this.buttonSaveLocal.ImageDisable = null;
+ this.buttonSaveLocal.ImageDown = null;
+ this.buttonSaveLocal.ImageUp = null;
+ this.buttonSaveLocal.Location = new System.Drawing.Point(413, 4);
+ this.buttonSaveLocal.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonSaveLocal.Name = "buttonSaveLocal";
+ this.buttonSaveLocal.NestedClickEventPrevent = false;
+ this.buttonSaveLocal.OutlinePixel = 2;
+ this.buttonSaveLocal.OverlapOptimize = true;
+ this.buttonSaveLocal.RepeatInterval = 200;
+ this.buttonSaveLocal.RepeatIntervalAccelerate = null;
+ this.buttonSaveLocal.RoundSize = 10;
+ this.buttonSaveLocal.SafeInterval = 200;
+ this.buttonSaveLocal.Size = new System.Drawing.Size(62, 29);
+ this.buttonSaveLocal.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonSaveLocal.TabIndex = 183;
+ this.buttonSaveLocal.Text = null;
+ this.buttonSaveLocal.TextColor = System.Drawing.Color.White;
+ this.buttonSaveLocal.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonSaveLocal.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonSaveLocal.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonSaveLocal.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonSaveLocal.Visible = false;
+ this.buttonSaveLocal.Click += new System.EventHandler(this.buttonSaveLocal_Click);
+ //
+ // labelHelp
+ //
+ this.labelHelp.BackGround = null;
+ this.labelHelp.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.labelHelp.BorderColor = System.Drawing.Color.Black;
+ this.labelHelp.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelHelp.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.labelHelp.ForeColor = System.Drawing.Color.Red;
+ this.labelHelp.LineSpacing = 0F;
+ this.labelHelp.Location = new System.Drawing.Point(142, 4);
+ this.labelHelp.Name = "labelHelp";
+ this.labelHelp.OverlapOptimize = true;
+ this.labelHelp.PasswordChar = '\0';
+ this.labelHelp.Radius = 3;
+ this.labelHelp.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelHelp.Size = new System.Drawing.Size(265, 29);
+ this.labelHelp.TabIndex = 201;
+ this.labelHelp.Text = "※ 저장 후, 재부팅 필수";
+ this.labelHelp.TextColor = System.Drawing.Color.White;
+ this.labelHelp.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelHelp.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelHelp.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelHelp.Wordwrap = true;
+ //
+ // smartGroupBox2
+ //
+ this.smartGroupBox2.BackGround = null;
+ this.smartGroupBox2.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartGroupBox2.BackImage = null;
+ this.smartGroupBox2.Controls.Add(this.smartButton1);
+ this.smartGroupBox2.Controls.Add(this.smartLabel1);
+ this.smartGroupBox2.Controls.Add(this.buttonSaveMode);
+ this.smartGroupBox2.Controls.Add(this.smartLabel13);
+ this.smartGroupBox2.Controls.Add(this.comboBoxEthernetOpMode);
+ this.smartGroupBox2.Controls.Add(this.comboBoxEthernetMode);
+ this.smartGroupBox2.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
+ this.smartGroupBox2.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.smartGroupBox2.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartGroupBox2.FrameLineThickness = 2;
+ this.smartGroupBox2.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.smartGroupBox2.HeaderHeightOffset = 12;
+ this.smartGroupBox2.Location = new System.Drawing.Point(67, 42);
+ this.smartGroupBox2.Name = "smartGroupBox2";
+ this.smartGroupBox2.RoundRadius = 5;
+ this.smartGroupBox2.Size = new System.Drawing.Size(774, 153);
+ this.smartGroupBox2.TabIndex = 94;
+ this.smartGroupBox2.Text = "Mode Settings";
+ this.smartGroupBox2.TextColor = System.Drawing.Color.White;
+ //
+ // smartButton1
+ //
+ this.smartButton1.BackGround = this.smartGroupBox2;
+ this.smartButton1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.smartButton1.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartButton1.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.smartButton1.ButtonImageAutoSize = true;
+ this.smartButton1.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.smartButton1.ButtonText = "Test send";
+ this.smartButton1.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.smartButton1.GroupID = 0;
+ this.smartButton1.ImageDisable = null;
+ this.smartButton1.ImageDown = null;
+ this.smartButton1.ImageUp = null;
+ this.smartButton1.Location = new System.Drawing.Point(623, 4);
+ this.smartButton1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.smartButton1.Name = "smartButton1";
+ this.smartButton1.NestedClickEventPrevent = false;
+ this.smartButton1.OutlinePixel = 2;
+ this.smartButton1.OverlapOptimize = true;
+ this.smartButton1.RepeatInterval = 200;
+ this.smartButton1.RepeatIntervalAccelerate = null;
+ this.smartButton1.RoundSize = 10;
+ this.smartButton1.SafeInterval = 200;
+ this.smartButton1.Size = new System.Drawing.Size(77, 29);
+ this.smartButton1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.smartButton1.TabIndex = 182;
+ this.smartButton1.Text = null;
+ this.smartButton1.TextColor = System.Drawing.Color.White;
+ this.smartButton1.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartButton1.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.smartButton1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.smartButton1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.smartButton1.Visible = false;
+ //
+ // smartLabel1
+ //
+ this.smartLabel1.BackGround = null;
+ this.smartLabel1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartLabel1.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel1.LineSpacing = 0F;
+ this.smartLabel1.Location = new System.Drawing.Point(21, 99);
+ this.smartLabel1.Name = "smartLabel1";
+ this.smartLabel1.OverlapOptimize = true;
+ this.smartLabel1.PasswordChar = '\0';
+ this.smartLabel1.Radius = 3;
+ this.smartLabel1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel1.Size = new System.Drawing.Size(202, 29);
+ this.smartLabel1.TabIndex = 181;
+ this.smartLabel1.Text = "Communication Mode:";
+ this.smartLabel1.TextColor = System.Drawing.Color.White;
+ this.smartLabel1.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel1.Wordwrap = false;
+ //
+ // buttonSaveMode
+ //
+ this.buttonSaveMode.BackGround = this.smartGroupBox2;
+ this.buttonSaveMode.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
+ this.buttonSaveMode.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonSaveMode.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonSaveMode.ButtonImageAutoSize = true;
+ this.buttonSaveMode.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonSaveMode.ButtonText = "Save";
+ this.buttonSaveMode.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonSaveMode.GroupID = 0;
+ this.buttonSaveMode.ImageDisable = null;
+ this.buttonSaveMode.ImageDown = null;
+ this.buttonSaveMode.ImageUp = null;
+ this.buttonSaveMode.Location = new System.Drawing.Point(707, 4);
+ this.buttonSaveMode.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonSaveMode.Name = "buttonSaveMode";
+ this.buttonSaveMode.NestedClickEventPrevent = false;
+ this.buttonSaveMode.OutlinePixel = 2;
+ this.buttonSaveMode.OverlapOptimize = true;
+ this.buttonSaveMode.RepeatInterval = 200;
+ this.buttonSaveMode.RepeatIntervalAccelerate = null;
+ this.buttonSaveMode.RoundSize = 10;
+ this.buttonSaveMode.SafeInterval = 200;
+ this.buttonSaveMode.Size = new System.Drawing.Size(62, 29);
+ this.buttonSaveMode.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonSaveMode.TabIndex = 91;
+ this.buttonSaveMode.Text = null;
+ this.buttonSaveMode.TextColor = System.Drawing.Color.White;
+ this.buttonSaveMode.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonSaveMode.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonSaveMode.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonSaveMode.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonSaveMode.Visible = false;
+ this.buttonSaveMode.Click += new System.EventHandler(this.buttonSaveMode_Click);
+ //
+ // smartLabel13
+ //
+ this.smartLabel13.BackGround = null;
+ this.smartLabel13.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.smartLabel13.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartLabel13.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel13.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.smartLabel13.LineSpacing = 0F;
+ this.smartLabel13.Location = new System.Drawing.Point(21, 64);
+ this.smartLabel13.Name = "smartLabel13";
+ this.smartLabel13.OverlapOptimize = true;
+ this.smartLabel13.PasswordChar = '\0';
+ this.smartLabel13.Radius = 3;
+ this.smartLabel13.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel13.Size = new System.Drawing.Size(202, 29);
+ this.smartLabel13.TabIndex = 180;
+ this.smartLabel13.Text = "Operation Mode:";
+ this.smartLabel13.TextColor = System.Drawing.Color.White;
+ this.smartLabel13.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel13.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel13.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel13.Wordwrap = false;
+ //
+ // comboBoxEthernetOpMode
+ //
+ this.comboBoxEthernetOpMode.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEthernetOpMode.Location = new System.Drawing.Point(229, 64);
+ this.comboBoxEthernetOpMode.Name = "comboBoxEthernetOpMode";
+ this.comboBoxEthernetOpMode.Size = new System.Drawing.Size(150, 29);
+ this.comboBoxEthernetOpMode.TabIndex = 179;
+ this.comboBoxEthernetOpMode.SelectedIndexChanged += new System.EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);
+ //
+ // comboBoxEthernetMode
+ //
+ this.comboBoxEthernetMode.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEthernetMode.Location = new System.Drawing.Point(229, 99);
+ this.comboBoxEthernetMode.Name = "comboBoxEthernetMode";
+ this.comboBoxEthernetMode.Size = new System.Drawing.Size(313, 29);
+ this.comboBoxEthernetMode.TabIndex = 178;
+ this.comboBoxEthernetMode.SelectedIndexChanged += new System.EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
+ //
+ // timerServer
+ //
+ this.timerServer.Interval = 1000;
+ this.timerServer.Tick += new System.EventHandler(this.timerServer_Tick);
+ //
+ // ControlMenuSystemEthernet
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.Controls.Add(this.smartGroupBox1);
+ this.Name = "ControlMenuSystemEthernet";
+ this.Size = new System.Drawing.Size(909, 664);
+ this.smartGroupBox1.ResumeLayout(false);
+ this.groupBoxModbusSetting.ResumeLayout(false);
+ this.smartGroupBox5.ResumeLayout(false);
+ this.smartGroupBox4.ResumeLayout(false);
+ this.smartGroupBox3.ResumeLayout(false);
+ this.panel2.ResumeLayout(false);
+ this.smartGroupBox2.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private SmartX.SmartGroupBox smartGroupBox1;
+ private SmartX.SmartGroupBox smartGroupBox4;
+ private SmartX.SmartButton buttonSaveMode;
+ private SmartX.SmartGroupBox smartGroupBox3;
+ private SmartX.SmartGroupBox smartGroupBox2;
+ private SmartX.SmartGroupBox smartGroupBox5;
+ private System.Windows.Forms.ComboBox comboBoxEthernetOpMode;
+ private System.Windows.Forms.ComboBox comboBoxEthernetMode;
+ private SmartX.SmartButton buttonSaveLocal;
+ private SmartX.SmartLabel labelHelp;
+ private SmartX.SmartButton smartButton1;
+ private SmartX.SmartLabel smartLabel1;
+ private SmartX.SmartLabel smartLabel13;
+ private SmartX.SmartLabel smartLabel6;
+ private SmartX.SmartLabel smartLabel2;
+ private SmartX.SmartLabel smartLabel3;
+ public SmartX.SmartLabel smartLabel5;
+ public SmartX.SmartLabel smartLabel4;
+ public SmartX.SmartLabel labelMACAddress6;
+ public SmartX.SmartLabel labelMACAddress5;
+ public SmartX.SmartLabel labelMACAddress4;
+ public SmartX.SmartLabel labelMACAddress1;
+ private SmartX.SmartLabel labelTitleMACAddress;
+ private System.Windows.Forms.Panel panel2;
+ private SmartX.SmartRadioButton radioButtonLocalIpStatic;
+ private SmartX.SmartRadioButton radioButtonLocalIpDHCP;
+ private SmartX.SmartLabel labelTitleIPConfiguration;
+ public SmartX.SmartLabel labelLocalSubnetMask4;
+ public SmartX.SmartLabel labelLocalSubnetMask3;
+ public SmartX.SmartLabel labelLocalSubnetMask2;
+ public SmartX.SmartLabel labelLocalSubnetMask1;
+ private SmartX.SmartLabel labelTitleSubnetMask;
+ public SmartX.SmartLabel labelLocalGateway4;
+ public SmartX.SmartLabel labelLocalGateway3;
+ public SmartX.SmartLabel labelLocalGateway2;
+ public SmartX.SmartLabel labelLocalGateway1;
+ private SmartX.SmartLabel labelTitleGateway;
+ public SmartX.SmartLabel labelLocalIP4;
+ public SmartX.SmartLabel labelLocalIP3;
+ public SmartX.SmartLabel labelLocalIP2;
+ public SmartX.SmartLabel labelLocalIP1;
+ private SmartX.SmartLabel labelTitleIPAddress;
+ public SmartX.SmartLabel labelHostPort;
+ public SmartX.SmartLabel labelHostIP4;
+ public SmartX.SmartLabel labelHostIP3;
+ public SmartX.SmartLabel labelHostIP2;
+ public SmartX.SmartLabel labelHostIP1;
+ private SmartX.SmartLabel labelClientStatus;
+ private SmartX.SmartLabel smartLabel7;
+ private SmartX.SmartLabel smartLabel8;
+ private SmartX.SmartLabel smartLabel9;
+ private SmartX.SmartButton buttonStopServer;
+ private SmartX.SmartButton buttonStartServer;
+ public SmartX.SmartLabel labelLocalPort;
+ private SmartX.SmartLabel labelConnectedIP;
+ private SmartX.SmartLabel labelServerStatus;
+ private SmartX.SmartButton buttonStopClient;
+ private SmartX.SmartButton buttonStartClient;
+ private SmartX.SmartButton buttonSaveClient;
+ private SmartX.SmartButton buttonSaveServer;
+ private SmartX.SmartGroupBox groupBoxModbusSetting;
+ public SmartX.SmartLabel labelStartAddress;
+ private SmartX.SmartLabel labelFunctions;
+ private SmartX.SmartLabel labelTitleStartAddress;
+ private SmartX.SmartLabel labelTitleFunctions;
+ private SmartX.SmartLabel smartLabel10;
+ public System.Windows.Forms.Timer timerServer;
+ private SmartX.SmartLabel labelClientCount;
+ private SmartX.SmartListBox smartListBoxClientList;
+ private SmartX.SmartLabel labelModbusRole;
+ private SmartX.SmartButton buttonSaveModbus;
+ }
+}
diff --git a/INT_PT002/Controls/System/ControlMenuSystemEthernet.cs b/INT_PT002/Controls/System/ControlMenuSystemEthernet.cs
new file mode 100644
index 0000000..5e2ff1d
--- /dev/null
+++ b/INT_PT002/Controls/System/ControlMenuSystemEthernet.cs
@@ -0,0 +1,1199 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+using INT_PT002.Forms;
+using INT_PT002.DialogForms;
+using INT_PT002.DataStore;
+using SmartX;
+
+namespace INT_PT002.Controls
+{
+ public partial class ControlMenuSystemEthernet : UserControl
+ {
+ #region Field
+ private FormMenu m_ParentForm;
+ private bool IsServerON;
+ string[] HexArray;
+
+ private delegate void ConnetedIPStatusCallback(string value);
+ #endregion
+
+ #region Constructor
+ public ControlMenuSystemEthernet(FormMenu parent)
+ {
+ InitializeComponent();
+
+ this.ParentForm = parent;
+
+ this.Initialize();
+ this.InitializeDesign();
+ this.DefaultSetting();
+ }
+ #endregion
+
+ #region Property
+ public FormMenu ParentForm
+ {
+ get { return this.m_ParentForm; }
+ private set { this.m_ParentForm = value; }
+ }
+ #endregion
+
+ #region Method
+ private void Initialize()
+ {
+ this.smartGroupBox1.Text = "System > Ethernet";
+ }
+ public void InitializeDesign()
+ {
+ if (this.ParentForm.ParentForm.SystemConfig.LANGUAGE == Define.E_LanguageID.English)
+ {
+ this.labelHelp.Text = "※ After setup, reboot is required.";
+
+ this.labelTitleIPConfiguration.Text = "IP Configuration";
+ this.labelTitleIPAddress.Text = "IP Address";
+ this.labelTitleSubnetMask.Text = "Subnet mask";
+ this.labelTitleGateway.Text = "Gateway";
+ }
+ else
+ {
+ this.labelHelp.Text = "※ 설정 후, 재부팅 필수";
+
+ this.labelTitleIPConfiguration.Text = "IP Configuration";
+ this.labelTitleIPAddress.Text = "IP Address";
+ this.labelTitleSubnetMask.Text = "Subnet mask";
+ this.labelTitleGateway.Text = "Gateway";
+ }
+ }
+ private void DefaultSetting()
+ {
+ string[] sValue;
+
+ this.IsServerON = false;
+
+ this.comboBoxEthernetOpMode.Items.Clear();
+ this.comboBoxEthernetOpMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);
+ this.comboBoxEthernetOpMode.Items.Add("None");
+ this.comboBoxEthernetOpMode.Items.Add("Server");
+ this.comboBoxEthernetOpMode.Items.Add("Client");
+ this.comboBoxEthernetOpMode.SelectedIndex = 0;
+ this.comboBoxEthernetOpMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);
+
+ this.comboBoxEthernetMode.Items.Clear();
+ this.comboBoxEthernetMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
+ this.comboBoxEthernetMode.Items.Add("None");
+ this.comboBoxEthernetMode.Items.Add("Modbus");
+ this.comboBoxEthernetMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
+
+ if (this.ParentForm.ParentForm.SystemConfig.IsEthernetEnable == true)
+ {
+ this.buttonStartServer.Enabled = true;
+ this.buttonStopServer.Enabled = true;
+ this.buttonStartClient.Enabled = true;
+ this.buttonStopClient.Enabled = true;
+ }
+ else
+ {
+ this.buttonStartServer.Enabled = false;
+ this.buttonStopServer.Enabled = false;
+ this.buttonStartClient.Enabled = false;
+ this.buttonStopClient.Enabled = false;
+ }
+
+ this.labelServerStatus.Text = "-";
+ this.labelClientStatus.Text = "-";
+ this.labelConnectedIP.Text = "-";
+
+ // Host IP
+ sValue = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP.Split('.');
+ this.labelHostIP1.Text = sValue[0];
+ this.labelHostIP2.Text = sValue[1];
+ this.labelHostIP3.Text = sValue[2];
+ this.labelHostIP4.Text = sValue[3];
+
+ this.labelHostPort.Text = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT.ToString();
+ this.labelLocalPort.Text = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT.ToString();
+
+ this.buttonSaveServer.Visible = false;
+ this.buttonSaveClient.Visible = false;
+ this.buttonSaveMode.Visible = false;
+ this.buttonSaveLocal.Visible = false;
+ this.buttonSaveModbus.Visible = false;
+ }
+
+ private string ReturnCommunicationModeName(int num)
+ {
+ #region 한국어
+ switch (num)
+ {
+ case 0:
+ return "None";
+ case 1:
+ return "Modbus";
+ default:
+ return "None";
+ }
+ #endregion
+ }
+
+ public void DisplayLabelLocalPort(bool bValue)
+ {
+ if (bValue == false)
+ {
+ this.labelLocalPort.Enabled = false;
+ this.labelLocalPort.BackColor = Color.Silver;
+ }
+ else
+ {
+ this.labelLocalPort.Enabled = true;
+ this.labelLocalPort.BackColor = Color.White;
+ }
+ }
+ public void UpdateEthernetStatusDisplay(string value)
+ {
+ if (this.labelClientStatus.Text != value)
+ this.labelClientStatus.Text = value;
+ }
+
+ private void LocalIPEnable(bool enable)
+ {
+ Color tempColor;
+
+ if (enable == true)
+ tempColor = Color.Black;
+ else
+ tempColor = Color.Gray;
+
+ #region Color
+ this.labelLocalIP1.ForeColor = tempColor;
+ this.labelLocalIP2.ForeColor = tempColor;
+ this.labelLocalIP3.ForeColor = tempColor;
+ this.labelLocalIP4.ForeColor = tempColor;
+
+ this.labelLocalSubnetMask1.ForeColor = tempColor;
+ this.labelLocalSubnetMask2.ForeColor = tempColor;
+ this.labelLocalSubnetMask3.ForeColor = tempColor;
+ this.labelLocalSubnetMask4.ForeColor = tempColor;
+
+ this.labelLocalGateway1.ForeColor = tempColor;
+ this.labelLocalGateway2.ForeColor = tempColor;
+ this.labelLocalGateway3.ForeColor = tempColor;
+ this.labelLocalGateway4.ForeColor = tempColor;
+ #endregion
+
+ #region Enable
+ this.labelLocalIP1.Enabled = enable;
+ this.labelLocalIP2.Enabled = enable;
+ this.labelLocalIP3.Enabled = enable;
+ this.labelLocalIP4.Enabled = enable;
+
+ this.labelLocalSubnetMask1.Enabled = enable;
+ this.labelLocalSubnetMask2.Enabled = enable;
+ this.labelLocalSubnetMask3.Enabled = enable;
+ this.labelLocalSubnetMask4.Enabled = enable;
+
+ this.labelLocalGateway1.Enabled = enable;
+ this.labelLocalGateway2.Enabled = enable;
+ this.labelLocalGateway3.Enabled = enable;
+ this.labelLocalGateway4.Enabled = enable;
+ #endregion
+ }
+ private void UpdateLocalIPAddressDisplay()
+ {
+ string[] sValue;
+
+ // Local IP
+ sValue = this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP.Split('.');
+ if (sValue.Length == 4)
+ {
+ this.labelLocalIP1.Text = sValue[0];
+ this.labelLocalIP2.Text = sValue[1];
+ this.labelLocalIP3.Text = sValue[2];
+ this.labelLocalIP4.Text = sValue[3];
+ }
+
+ // Local Subnet Mask
+ sValue = this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask.Split('.');
+ if (sValue.Length == 4)
+ {
+ this.labelLocalSubnetMask1.Text = sValue[0];
+ this.labelLocalSubnetMask2.Text = sValue[1];
+ this.labelLocalSubnetMask3.Text = sValue[2];
+ this.labelLocalSubnetMask4.Text = sValue[3];
+ }
+
+ // Local GateWay
+ sValue = this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay.Split('.');
+ if (sValue.Length == 4)
+ {
+ this.labelLocalGateway1.Text = sValue[0];
+ this.labelLocalGateway2.Text = sValue[1];
+ this.labelLocalGateway3.Text = sValue[2];
+ this.labelLocalGateway4.Text = sValue[3];
+ }
+ }
+ private void UpdateLocalIPConfigurationDisplay()
+ {
+ // Local IP DHCP
+ if (this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable == 1)
+ {
+ this.radioButtonLocalIpDHCP.Checked = true;
+ this.LocalIPEnable(false);
+ }
+ else
+ {
+ this.radioButtonLocalIpStatic.Checked = true;
+ this.LocalIPEnable(true);
+ }
+ }
+ private void UpdateMACAddressDisplay()
+ {
+ byte[] currentMAC = this.ParentForm.ParentForm.smartConfigs.IPSettings.GetMACAddress();
+ string hex = BitConverter.ToString(currentMAC);
+ this.HexArray = hex.Split('-');
+
+ if (this.HexArray.Length >= 6)
+ {
+ this.labelMACAddress1.Text = this.HexArray[0] + ":" + this.HexArray[1] + ":" + this.HexArray[2] + ":";
+ this.labelMACAddress4.Text = this.HexArray[3];
+ this.labelMACAddress5.Text = this.HexArray[4];
+ this.labelMACAddress6.Text = this.HexArray[5];
+ }
+ }
+
+ private void ConnectedIPStatusOut(string value)
+ {
+ this.labelConnectedIP.Text = value;
+ }
+ public void DelegateConnectedIPStatusOut(string value)
+ {
+ this.Invoke(new ConnetedIPStatusCallback(this.ConnectedIPStatusOut), value);
+ }
+
+ public void DisplayRefresh()
+ {
+ this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplayMode = Define.E_DisplayModeStore.Ethernet;
+ this.ParentForm.ParentForm.SetDisplayMode(Define.E_EquipmentMode.Menu);
+
+ this.comboBoxEthernetMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
+ this.comboBoxEthernetOpMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);
+
+ this.comboBoxEthernetOpMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE;
+ this.comboBoxEthernetMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE;
+
+ this.comboBoxEthernetMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
+ this.comboBoxEthernetOpMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);
+
+ this.groupBoxModbusSetting.Visible = false;
+
+ if (this.comboBoxEthernetOpMode.SelectedIndex == 1)
+ {
+ this.buttonStartServer.Enabled = true;
+ this.buttonStopServer.Enabled = true;
+
+ if (string.Compare(this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP, "0.0.0.0") == 0)
+ {
+ if (this.labelServerStatus.Text != ">Addr Err")
+ this.labelServerStatus.Text = ">Addr Err";
+
+ this.timerServer.Enabled = false;
+ }
+ else
+ {
+ this.ParentForm.ParentForm.EthernetServerStart();
+
+ if (this.timerServer.Enabled != true)
+ this.timerServer.Enabled = true;
+ }
+ }
+ else if (this.comboBoxEthernetOpMode.SelectedIndex == 2)
+ {
+ this.buttonStartClient.Enabled = true;
+ this.buttonStopClient.Enabled = true;
+
+ this.ParentForm.ParentForm.EthernetClientConnect();
+ }
+ else
+ {
+ this.buttonStartServer.Enabled = false;
+ this.buttonStopServer.Enabled = false;
+ this.buttonStartClient.Enabled = false;
+ this.buttonStopClient.Enabled = false;
+
+ this.labelServerStatus.Text = "-";
+ this.labelClientStatus.Text = "-";
+ this.labelConnectedIP.Text = "-";
+ }
+ this.labelLocalPort.Text = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT.ToString();
+
+ // Local IP DHCP
+ this.UpdateLocalIPConfigurationDisplay();
+
+ // Local IP
+ this.UpdateLocalIPAddressDisplay();
+
+ // MAC Address
+ this.UpdateMACAddressDisplay();
+
+ this.buttonSaveMode.Visible = false;
+ }
+ #endregion
+
+ #region Event Handler
+ private void buttonSaveMode_Click(object sender, EventArgs e)
+ {
+ int mode = 0;
+ string beforeLocalPort = "", afterLocalPort = "";
+ string beforeOpMode = "", afterOpMode = "";
+ string beforeComMode = "", afterComMode = "";
+
+ beforeLocalPort = this.labelLocalPort.Text;
+ if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
+ beforeOpMode = "Server";
+ else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
+ beforeOpMode = "Client";
+ else
+ beforeOpMode = "None";
+ beforeComMode = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE);
+
+ if (this.comboBoxEthernetOpMode.SelectedIndex == 1)
+ {
+ this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_SELECTFUNCTION = (int)Define.E_ModbusFunction._04_ReadInputRegister;
+ this.ParentForm.ParentForm.EthernetClientDisconnect();
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE = 1;
+ afterOpMode = "Server";
+
+ this.labelModbusRole.Text = "Slave";
+ this.labelFunctions.Text = "04: Read input register";
+
+ this.buttonStartServer.Enabled = true;
+ this.buttonStopServer.Enabled = true;
+ this.buttonStartClient.Enabled = false;
+ this.buttonStopClient.Enabled = false;
+ }
+ else if (this.comboBoxEthernetOpMode.SelectedIndex == 2)
+ {
+ this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_SELECTFUNCTION = (int)Define.E_ModbusFunction._16_WriteMultipleRegister;
+ this.labelServerStatus.Text = "-";
+ this.timerServer.Enabled = false;
+ this.ParentForm.ParentForm.EthernetServerStop();
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE = 2;
+ this.ParentForm.ParentForm.EthernetClientDisconnect();
+ afterOpMode = "Client";
+
+ this.labelModbusRole.Text = "Master";
+ this.labelFunctions.Text = "04: Read input register";
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);
+
+ this.labelConnectedIP.Text = "-";
+
+ this.buttonStartClient.Enabled = true;
+ this.buttonStopClient.Enabled = true;
+ this.buttonStartServer.Enabled = false;
+ this.buttonStopServer.Enabled = false;
+ }
+ else
+ {
+ this.timerServer.Enabled = false;
+ this.ParentForm.ParentForm.EthernetServerStop();
+ this.ParentForm.ParentForm.EthernetClientDisconnect();
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE = 0;
+ afterOpMode = "None";
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);
+
+ this.buttonStartServer.Enabled = false;
+ this.buttonStopServer.Enabled = false;
+ this.buttonStartClient.Enabled = false;
+ this.buttonStopClient.Enabled = false;
+
+ this.labelServerStatus.Text = "-";
+ this.labelClientStatus.Text = "-";
+ this.labelConnectedIP.Text = "-";
+ }
+
+ mode = this.comboBoxEthernetMode.SelectedIndex;
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE = mode;
+ afterComMode = this.ReturnCommunicationModeName(mode);
+
+ if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE == (int)Define.E_CommMode.f1_Modbus)
+ {
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainButtonModbusAdd(true);
+ this.groupBoxModbusSetting.Visible = true;
+ }
+ else
+ {
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainButtonModbusAdd(false);
+ this.groupBoxModbusSetting.Visible = false;
+ }
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
+ this.ParentForm.ParentForm.ChildFormMainDisplay.InitialEthernetIcon();
+
+ this.buttonSaveMode.Visible = false;
+
+ afterLocalPort = this.labelLocalPort.Text;
+
+ if (beforeLocalPort != afterLocalPort)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalPort, "", beforeLocalPort, afterLocalPort);
+ if (beforeOpMode != afterOpMode)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPOpMode, "", beforeOpMode, afterOpMode);
+ if (beforeComMode != afterComMode)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPComMode, "", beforeComMode, afterComMode);
+ }
+ private void buttonTestSend_Click(object sender, EventArgs e)
+ {
+ int tempStringLength = 0;
+ string tempString = "";
+ string str = "";
+
+ StringBuilder sb = new StringBuilder();
+ byte[] byteArray = new byte[12];
+ byte[] weightBytes = new byte[4];
+ byte[] bytes = new byte[100];
+
+ if (this.comboBoxEthernetMode.SelectedIndex == 0)
+ return;
+
+ switch (this.comboBoxEthernetMode.SelectedIndex)
+ {
+ case 1:
+ #region Modbus TCP(16. Write Multiple Registers)
+ if (this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_SELECTFUNCTION == (int)Define.E_ModbusFunction._16_WriteMultipleRegister)
+ {
+ byte[] sendData = this.ParentForm.ParentForm.Modbus.MakeTCPSendAllData(this.ParentForm.ParentForm.Transfer_1_Modbus_Write(), this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS);
+
+ this.ParentForm.ParentForm.EthernetWeightDataForModbus(sendData);
+ }
+ #endregion
+ break;
+ default:
+ break;
+ }
+
+ switch (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE)
+ {
+ case 1:
+
+ if (this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList != null)
+ {
+ foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList)
+ {
+ if (sb.ToString() == "")
+ this.ParentForm.ParentForm.EthernetServerSendMessage(client, byteArray);
+ else
+ this.ParentForm.ParentForm.EthernetServerSendMessage(client, sb.ToString());
+ }
+ }
+ break;
+ case 2:
+ if (sb.ToString() == "")
+ this.ParentForm.ParentForm.EthernetWeightData(byteArray);
+ else
+ this.ParentForm.ParentForm.EthernetWeightData(sb.ToString());
+ break;
+ default:
+ break;
+ }
+ }
+ private void comboBoxEthernetMode_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (this.buttonSaveMode.Visible == false)
+ this.buttonSaveMode.Visible = true;
+ }
+ private void comboBoxEthernetOpMode_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (this.buttonSaveMode.Visible == false)
+ this.buttonSaveMode.Visible = true;
+ }
+
+ // Server
+ private void labelLocalPort_Click(object sender, EventArgs e)
+ {
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalPort.Text, 5, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ this.labelLocalPort.Text = myKeyPad.StringValue;
+
+ if (this.buttonSaveServer.Visible == false)
+ this.buttonSaveServer.Visible = true;
+ }
+ }
+ private void buttonStartServer_Click(object sender, EventArgs e)
+ {
+ this.buttonStartServer.Enabled = true;
+ this.buttonStopServer.Enabled = true;
+
+ if (string.Compare(this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP, "0.0.0.0") == 0)
+ {
+ if (this.labelServerStatus.Text != ">Addr Err")
+ this.labelServerStatus.Text = ">Addr Err";
+
+ if (this.timerServer.Enabled != false)
+ this.timerServer.Enabled = false;
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);
+ }
+ else
+ {
+ this.ParentForm.ParentForm.EthernetServerStart();
+
+ if (this.timerServer.Enabled != true)
+ this.timerServer.Enabled = true;
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(true);
+ }
+
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStart, "Server");
+ }
+ private void buttonStopServer_Click(object sender, EventArgs e)
+ {
+ this.timerServer.Enabled = false;
+ this.ParentForm.ParentForm.EthernetServerStop();
+
+ if (this.labelServerStatus.Text != ">Stop")
+ this.labelServerStatus.Text = ">Stop";
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStop, "Server");
+ }
+ private void buttonSaveServer_Click(object sender, EventArgs e)
+ {
+ string before = "", after = "";
+
+ before = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT.ToString();
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT = int.Parse(this.labelLocalPort.Text);
+ this.ParentForm.ParentForm.smartTCPMultiServer.Port = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT;
+ after = this.labelLocalPort.Text;
+
+ if (before != after)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalPort, "", before, after);
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
+
+ this.buttonSaveServer.Visible = false;
+ }
+
+ // Client
+ private void buttonSaveClient_Click(object sender, EventArgs e)
+ {
+ string beforeServerIP = "", afterServerIP = "";
+ string beforeServerPort = "", afterServerPort = "";
+
+ beforeServerIP = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP;
+ beforeServerPort = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT.ToString();
+ try
+ {
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT = int.Parse(this.labelHostPort.Text);
+ afterServerPort = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT.ToString();
+ }
+ catch
+ {
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT = 0;
+ afterServerPort = "0";
+ }
+
+ this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP = string.Format("{0}.{1}.{2}.{3}",
+ this.labelHostIP1.Text, this.labelHostIP2.Text, this.labelHostIP3.Text, this.labelHostIP4.Text);
+
+ afterServerIP = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP;
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
+ this.ParentForm.ParentForm.EthernetClientDisconnect();
+ this.buttonSaveClient.Enabled = false;
+
+ if (beforeServerIP != afterServerIP)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerIPAddress, "", beforeServerIP, afterServerIP);
+ if (beforeServerPort != afterServerPort)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerPort, "", beforeServerPort, afterServerPort);
+ }
+ private void labelHostIP1_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP1.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelHostIP1.Text = myKeyPad.StringValue;
+ this.buttonSaveClient.Enabled = true;
+ }
+ }
+ }
+ private void labelHostIP2_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP2.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelHostIP2.Text = myKeyPad.StringValue;
+ this.buttonSaveClient.Enabled = true;
+ }
+ }
+ }
+ private void labelHostIP3_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP3.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelHostIP3.Text = myKeyPad.StringValue;
+ this.buttonSaveClient.Enabled = true;
+ }
+ }
+ }
+ private void labelHostIP4_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP4.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelHostIP4.Text = myKeyPad.StringValue;
+ this.buttonSaveClient.Enabled = true;
+ }
+ }
+ }
+ private void labelHostPort_Click(object sender, EventArgs e)
+ {
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostPort.Text, 5, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ this.labelHostPort.Text = myKeyPad.StringValue;
+ this.buttonSaveClient.Enabled = true;
+ }
+ }
+ private void buttonStartClient_Click(object sender, EventArgs e)
+ {
+ this.buttonStartClient.Enabled = true;
+ this.buttonStopClient.Enabled = true;
+
+ this.ParentForm.ParentForm.EthernetClientConnect();
+
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStart, "Client");
+ }
+ private void buttonStopClient_Click(object sender, EventArgs e)
+ {
+ this.ParentForm.ParentForm.EthernetClientDisconnect();
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStop, "Client");
+ }
+
+ // Local
+ private void labelLocalIP1_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP1.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalIP1.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalIP2_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP2.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalIP2.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalIP3_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP3.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalIP3.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalIP4_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP4.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalIP4.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+
+ private void labelLocalSubnetMask1_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask1.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalSubnetMask1.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalSubnetMask2_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask2.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalSubnetMask2.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalSubnetMask3_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask3.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalSubnetMask3.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalSubnetMask4_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask4.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalSubnetMask4.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+
+ private void labelLocalGateway1_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway1.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalGateway1.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalGateway2_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway2.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalGateway2.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalGateway3_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway3.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalGateway3.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+ private void labelLocalGateway4_Click(object sender, EventArgs e)
+ {
+ string temp = "";
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway4.Text, 3, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue > 255)
+ {
+ temp = "0 ~ 255";
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelLocalGateway4.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+ }
+
+ private void radioButtonLocalIpDHCP_Click(object sender, EventArgs e)
+ {
+ string before = "", after = "";
+ DialogFormYesNo myDlg;
+
+ if (this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable == 0)
+ before = "Static";
+ else
+ before = "DHCP";
+
+ if (this.radioButtonLocalIpStatic.Checked == true)
+ myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 21); // 로컬IP주소 수동으로 설정하시겠습니까?
+ else
+ myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 22); // 로컬IP주소 자동으로 설정하시겠습니까?
+
+ if (myDlg.ShowDialog() == DialogResult.Yes)
+ {
+ if (this.radioButtonLocalIpDHCP.Checked == true)
+ {
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable = 1;
+
+ this.LocalIPEnable(false);
+ this.UpdateLocalIPAddressDisplay();
+ }
+ else
+ {
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable = 0;
+
+ this.LocalIPEnable(true);
+
+ try
+ {
+ this.UpdateLocalIPAddressDisplay();
+ }
+ catch
+ {
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP = "192.168.3.10";
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask = "255.255.255.0";
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay = "192.168.3.1";
+
+ this.UpdateLocalIPAddressDisplay();
+ }
+ }
+
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.Save();
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.SetApply();
+
+ if (this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable == 0)
+ after = "Static";
+ else
+ after = "DHCP";
+
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPConfig, "", before, after);
+ }
+ else
+ {
+ this.DisplayRefresh();
+ }
+ }
+ private void labelMACAddress_Click(object sender, EventArgs e)
+ {
+ SmartX.SmartLabel label = sender as SmartX.SmartLabel;
+
+ DialogFormHexKeyPad myKeyPad = new DialogFormHexKeyPad(label.Text, 2, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ label.Text = myKeyPad.StringValue;
+ this.buttonSaveLocal.Visible = true;
+ }
+ }
+
+ private void buttonSaveLocal_Click(object sender, EventArgs e)
+ {
+ string beforeIP = "", afterIP = "";
+ string beforeSubnetMask = "", afterSubnetMask = "";
+ string beforeGateway = "", afterGateway = "";
+
+ this.buttonSaveLocal.Visible = false;
+
+ byte[] changeMAC = new byte[6];
+
+ changeMAC[0] = Convert.ToByte(this.HexArray[0], 16);
+ changeMAC[1] = Convert.ToByte(this.HexArray[1], 16);
+ changeMAC[2] = Convert.ToByte(this.HexArray[2], 16);
+ changeMAC[3] = Convert.ToByte(this.labelMACAddress4.Text, 16);
+ changeMAC[4] = Convert.ToByte(this.labelMACAddress5.Text, 16);
+ changeMAC[5] = Convert.ToByte(this.labelMACAddress6.Text, 16);
+
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.SetMACAddress(changeMAC);
+
+ beforeIP = this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP;
+ beforeSubnetMask = this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask;
+ beforeGateway = this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay;
+
+ if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
+ this.ParentForm.ParentForm.EthernetServerStop();
+ else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
+ this.ParentForm.ParentForm.EthernetClientDisconnect();
+
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP = string.Format("{0}.{1}.{2}.{3}",
+ this.labelLocalIP1.Text, this.labelLocalIP2.Text, this.labelLocalIP3.Text, this.labelLocalIP4.Text);
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask = string.Format("{0}.{1}.{2}.{3}",
+ this.labelLocalSubnetMask1.Text, this.labelLocalSubnetMask2.Text, this.labelLocalSubnetMask3.Text, this.labelLocalSubnetMask4.Text);
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay = string.Format("{0}.{1}.{2}.{3}",
+ this.labelLocalGateway1.Text, this.labelLocalGateway2.Text, this.labelLocalGateway3.Text, this.labelLocalGateway4.Text);
+
+ afterIP = this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP;
+ afterSubnetMask = this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask;
+ afterGateway = this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay;
+
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.Save();
+ this.ParentForm.ParentForm.smartConfigs.IPSettings.SetApply();
+
+ if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
+ this.ParentForm.ParentForm.EthernetServerStart();
+ else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
+ this.ParentForm.ParentForm.EthernetClientConnect();
+
+ if (beforeIP != afterIP)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPAddress, "", beforeIP, afterIP);
+ if (beforeSubnetMask != afterSubnetMask)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalSubnetMask, "", beforeSubnetMask, afterSubnetMask);
+ if (beforeGateway != afterGateway)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalGateway, "", beforeGateway, afterGateway);
+ }
+
+ // Modbus Settings
+ private void labelStartAddress_Click(object sender, EventArgs e)
+ {
+
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelStartAddress.Text, 5, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 99999)
+ {
+ // 입력범위를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelStartAddress.Text = myKeyPad.StringValue;
+
+ if (this.buttonSaveModbus.Visible == false)
+ this.buttonSaveModbus.Visible = true;
+ }
+ }
+ }
+ private void buttonSaveModbus_Click(object sender, EventArgs e)
+ {
+ string before = "", after = "";
+
+ before = this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS.ToString();
+ this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS = int.Parse(this.labelStartAddress.Text);
+ after = this.labelStartAddress.Text;
+
+ if (before != after)
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "TCP", before, after);
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
+
+ this.buttonSaveModbus.Visible = false;
+ }
+
+ private void timerServer_Tick(object sender, EventArgs e)
+ {
+ if (this.ParentForm.ParentForm.smartTCPMultiServer.IsStart == true)
+ {
+ if (this.labelServerStatus.Text != ">Start")
+ this.labelServerStatus.Text = ">Start";
+
+ if (this.IsServerON == false)
+ {
+ this.IsServerON = true;
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.ServerON, "");
+ }
+
+ this.labelConnectedIP.Text = "-";
+ this.smartListBoxClientList.ClearAll();
+ this.labelClientCount.Text = "-";
+
+ if (this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList != null)
+ {
+ int length = this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList.Length;
+ for (int i = 0; i < length; i++)
+ {
+ this.smartListBoxClientList.AddItem(
+ this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList[i].strID + ", " +
+ this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList[i].strIPAddress);
+ }
+
+ this.labelClientCount.Text = length.ToString();
+ if (this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList == null)
+ this.labelConnectedIP.Text = "-";
+ else
+ this.labelConnectedIP.Text = this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList[0].strIPAddress;
+ }
+ }
+ else
+ {
+ if (this.labelServerStatus.Text != ">Stop")
+ this.labelServerStatus.Text = ">Stop";
+
+ if (this.IsServerON == true)
+ {
+ this.IsServerON = false;
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.ServerOFF, "");
+ }
+
+ this.smartListBoxClientList.ClearAll();
+ this.labelClientCount.Text = "-";
+ }
+ }
+ #endregion
+ }
+}
diff --git a/INT_PT002/Controls/System/ControlMenuSystemEthernet.resx b/INT_PT002/Controls/System/ControlMenuSystemEthernet.resx
new file mode 100644
index 0000000..28f593e
--- /dev/null
+++ b/INT_PT002/Controls/System/ControlMenuSystemEthernet.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 4
+
+
+ 36
+
+
+ WEBPAD
+
+
\ No newline at end of file
diff --git a/INT_PT002/Controls/System/ControlMenuSystemInformation.cs b/INT_PT002/Controls/System/ControlMenuSystemInformation.cs
index 2487e37..6100724 100644
--- a/INT_PT002/Controls/System/ControlMenuSystemInformation.cs
+++ b/INT_PT002/Controls/System/ControlMenuSystemInformation.cs
@@ -383,6 +383,7 @@ namespace INT_PT002.Controls
this.upDownMinute.Value = currentTime.Minute;
this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayTime();
+ this.ParentForm.UpdateDisplayTime();
}
#endregion
diff --git a/INT_PT002/Controls/User/ControlMenuUserGroupEditor.Designer.cs b/INT_PT002/Controls/User/ControlMenuUserGroupEditor.Designer.cs
index 7c72fa8..6c8054c 100644
--- a/INT_PT002/Controls/User/ControlMenuUserGroupEditor.Designer.cs
+++ b/INT_PT002/Controls/User/ControlMenuUserGroupEditor.Designer.cs
@@ -30,10 +30,12 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlMenuUserGroupEditor));
this.smartGroupBox1 = new SmartX.SmartGroupBox();
+ this.smartLabel1 = new SmartX.SmartLabel();
this.smartKeyboard = new SmartX.SmartKeyboard();
this.buttonGroupNameChange = new SmartX.SmartButton();
this.labelTitleMenuUserGroupEditor = new SmartX.SmartLabel();
this.groupBoxDefault = new SmartX.SmartGroupBox();
+ this.checkBoxDefaultMenuEthernet = new SmartX.SmartCheckBox();
this.checkBoxDefaultMenuUserGroupEditor = new SmartX.SmartCheckBox();
this.checkBoxDefaultMainProductChange = new SmartX.SmartCheckBox();
this.checkBoxDefaultMenuUserSetting = new SmartX.SmartCheckBox();
@@ -43,10 +45,11 @@
this.checkBoxDefaultMainClear = new SmartX.SmartCheckBox();
this.checkBoxDefaultMenuEquipmentLog = new SmartX.SmartCheckBox();
this.checkBoxDefaultMenuCheckLog = new SmartX.SmartCheckBox();
- this.checkBoxDefaultMenuStatus = new SmartX.SmartCheckBox();
+ this.checkBoxDefaultMenuEquipment = new SmartX.SmartCheckBox();
this.checkBoxDefaultMenuAlarmList = new SmartX.SmartCheckBox();
this.checkBoxDefaultMenuInformation = new SmartX.SmartCheckBox();
this.groupBoxLevel3 = new SmartX.SmartGroupBox();
+ this.checkBoxL3MenuEthernet = new SmartX.SmartCheckBox();
this.textBoxLevel3 = new System.Windows.Forms.TextBox();
this.checkBoxL3MenuUserGroupEditor = new SmartX.SmartCheckBox();
this.checkBoxL3MainProductChange = new SmartX.SmartCheckBox();
@@ -57,10 +60,11 @@
this.checkBoxL3MainClear = new SmartX.SmartCheckBox();
this.checkBoxL3MenuHistoryLog = new SmartX.SmartCheckBox();
this.checkBoxL3MenuInspectionLog = new SmartX.SmartCheckBox();
- this.checkBoxL3MenuStatus = new SmartX.SmartCheckBox();
+ this.checkBoxL3MenuEquipment = new SmartX.SmartCheckBox();
this.checkBoxL3MenuAlarmLog = new SmartX.SmartCheckBox();
this.checkBoxL3MenuInformation = new SmartX.SmartCheckBox();
this.groupBoxLevel2 = new SmartX.SmartGroupBox();
+ this.checkBoxL2MenuEthernet = new SmartX.SmartCheckBox();
this.textBoxLevel2 = new System.Windows.Forms.TextBox();
this.checkBoxL2MenuUserGroupEditor = new SmartX.SmartCheckBox();
this.checkBoxL2MainProductChange = new SmartX.SmartCheckBox();
@@ -71,10 +75,11 @@
this.checkBoxL2MainClear = new SmartX.SmartCheckBox();
this.checkBoxL2MenuHistoryLog = new SmartX.SmartCheckBox();
this.checkBoxL2MenuInspectionLog = new SmartX.SmartCheckBox();
- this.checkBoxL2MenuStatus = new SmartX.SmartCheckBox();
+ this.checkBoxL2MenuEquipment = new SmartX.SmartCheckBox();
this.checkBoxL2MenuAlarmLog = new SmartX.SmartCheckBox();
this.checkBoxL2MenuInformation = new SmartX.SmartCheckBox();
this.groupBoxLevel1 = new SmartX.SmartGroupBox();
+ this.checkBoxL1MenuEthernet = new SmartX.SmartCheckBox();
this.textBoxLevel1 = new System.Windows.Forms.TextBox();
this.checkBoxL1MenuUserGroupEditor = new SmartX.SmartCheckBox();
this.checkBoxL1MainProductChange = new SmartX.SmartCheckBox();
@@ -85,7 +90,7 @@
this.checkBoxL1MainClear = new SmartX.SmartCheckBox();
this.checkBoxL1MenuHistoryLog = new SmartX.SmartCheckBox();
this.checkBoxL1MenuInspectionLog = new SmartX.SmartCheckBox();
- this.checkBoxL1MenuStatus = new SmartX.SmartCheckBox();
+ this.checkBoxL1MenuEquipment = new SmartX.SmartCheckBox();
this.checkBoxL1MenuAlarmLog = new SmartX.SmartCheckBox();
this.checkBoxL1MenuInformation = new SmartX.SmartCheckBox();
this.labelTitleMenuEquipment = new SmartX.SmartLabel();
@@ -114,6 +119,7 @@
this.smartGroupBox1.BackGround = null;
this.smartGroupBox1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.smartGroupBox1.BackImage = null;
+ this.smartGroupBox1.Controls.Add(this.smartLabel1);
this.smartGroupBox1.Controls.Add(this.smartKeyboard);
this.smartGroupBox1.Controls.Add(this.buttonGroupNameChange);
this.smartGroupBox1.Controls.Add(this.labelTitleMenuUserGroupEditor);
@@ -148,6 +154,29 @@
this.smartGroupBox1.Text = "User > Group Editor";
this.smartGroupBox1.TextColor = System.Drawing.Color.White;
//
+ // smartLabel1
+ //
+ this.smartLabel1.BackGround = null;
+ this.smartLabel1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartLabel1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartLabel1.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.smartLabel1.LineSpacing = 0F;
+ this.smartLabel1.Location = new System.Drawing.Point(158, 544);
+ this.smartLabel1.Name = "smartLabel1";
+ this.smartLabel1.OverlapOptimize = true;
+ this.smartLabel1.PasswordChar = '\0';
+ this.smartLabel1.Radius = 3;
+ this.smartLabel1.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel1.Size = new System.Drawing.Size(132, 23);
+ this.smartLabel1.TabIndex = 223;
+ this.smartLabel1.Text = "Ethernet";
+ this.smartLabel1.TextColor = System.Drawing.Color.White;
+ this.smartLabel1.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel1.Wordwrap = false;
+ //
// smartKeyboard
//
this.smartKeyboard.BackGround = null;
@@ -256,6 +285,7 @@
this.groupBoxDefault.BackGround = null;
this.groupBoxDefault.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.groupBoxDefault.BackImage = null;
+ this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuEthernet);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuUserGroupEditor);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMainProductChange);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuUserSetting);
@@ -265,7 +295,7 @@
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMainClear);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuEquipmentLog);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuCheckLog);
- this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuStatus);
+ this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuEquipment);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuAlarmList);
this.groupBoxDefault.Controls.Add(this.checkBoxDefaultMenuInformation);
this.groupBoxDefault.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
@@ -282,6 +312,29 @@
this.groupBoxDefault.TextColor = System.Drawing.Color.White;
this.groupBoxDefault.Visible = false;
//
+ // checkBoxDefaultMenuEthernet
+ //
+ this.checkBoxDefaultMenuEthernet.BackGround = this.groupBoxDefault;
+ this.checkBoxDefaultMenuEthernet.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.checkBoxDefaultMenuEthernet.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxDefaultMenuEthernet.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxDefaultMenuEthernet.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxDefaultMenuEthernet.CheckBoxSymbolSize = 20;
+ this.checkBoxDefaultMenuEthernet.Checked = false;
+ this.checkBoxDefaultMenuEthernet.CheckLineWidth = 3;
+ this.checkBoxDefaultMenuEthernet.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxDefaultMenuEthernet.ImageCheckBox = null;
+ this.checkBoxDefaultMenuEthernet.ImageUnCheckBox = null;
+ this.checkBoxDefaultMenuEthernet.Location = new System.Drawing.Point(48, 446);
+ this.checkBoxDefaultMenuEthernet.Name = "checkBoxDefaultMenuEthernet";
+ this.checkBoxDefaultMenuEthernet.OverlapOptimize = true;
+ this.checkBoxDefaultMenuEthernet.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxDefaultMenuEthernet.TabIndex = 121;
+ this.checkBoxDefaultMenuEthernet.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxDefaultMenuEthernet.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxDefaultMenuEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxDefaultMenuEthernet.Click += new System.EventHandler(this.checkBox_Click);
+ //
// checkBoxDefaultMenuUserGroupEditor
//
this.checkBoxDefaultMenuUserGroupEditor.BackGround = this.groupBoxDefault;
@@ -486,28 +539,28 @@
this.checkBoxDefaultMenuCheckLog.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
this.checkBoxDefaultMenuCheckLog.Click += new System.EventHandler(this.checkBox_Click);
//
- // checkBoxDefaultMenuStatus
+ // checkBoxDefaultMenuEquipment
//
- this.checkBoxDefaultMenuStatus.BackGround = this.groupBoxDefault;
- this.checkBoxDefaultMenuStatus.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
- this.checkBoxDefaultMenuStatus.CheckBoxBackColor = System.Drawing.Color.White;
- this.checkBoxDefaultMenuStatus.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
- this.checkBoxDefaultMenuStatus.CheckBoxOutlineColor = System.Drawing.Color.Black;
- this.checkBoxDefaultMenuStatus.CheckBoxSymbolSize = 20;
- this.checkBoxDefaultMenuStatus.Checked = false;
- this.checkBoxDefaultMenuStatus.CheckLineWidth = 3;
- this.checkBoxDefaultMenuStatus.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
- this.checkBoxDefaultMenuStatus.ImageCheckBox = null;
- this.checkBoxDefaultMenuStatus.ImageUnCheckBox = null;
- this.checkBoxDefaultMenuStatus.Location = new System.Drawing.Point(48, 417);
- this.checkBoxDefaultMenuStatus.Name = "checkBoxDefaultMenuStatus";
- this.checkBoxDefaultMenuStatus.OverlapOptimize = true;
- this.checkBoxDefaultMenuStatus.Size = new System.Drawing.Size(23, 23);
- this.checkBoxDefaultMenuStatus.TabIndex = 113;
- this.checkBoxDefaultMenuStatus.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.checkBoxDefaultMenuStatus.TextColorDisable = System.Drawing.Color.Gray;
- this.checkBoxDefaultMenuStatus.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
- this.checkBoxDefaultMenuStatus.Click += new System.EventHandler(this.checkBox_Click);
+ this.checkBoxDefaultMenuEquipment.BackGround = this.groupBoxDefault;
+ this.checkBoxDefaultMenuEquipment.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.checkBoxDefaultMenuEquipment.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxDefaultMenuEquipment.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxDefaultMenuEquipment.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxDefaultMenuEquipment.CheckBoxSymbolSize = 20;
+ this.checkBoxDefaultMenuEquipment.Checked = false;
+ this.checkBoxDefaultMenuEquipment.CheckLineWidth = 3;
+ this.checkBoxDefaultMenuEquipment.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxDefaultMenuEquipment.ImageCheckBox = null;
+ this.checkBoxDefaultMenuEquipment.ImageUnCheckBox = null;
+ this.checkBoxDefaultMenuEquipment.Location = new System.Drawing.Point(48, 417);
+ this.checkBoxDefaultMenuEquipment.Name = "checkBoxDefaultMenuEquipment";
+ this.checkBoxDefaultMenuEquipment.OverlapOptimize = true;
+ this.checkBoxDefaultMenuEquipment.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxDefaultMenuEquipment.TabIndex = 113;
+ this.checkBoxDefaultMenuEquipment.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxDefaultMenuEquipment.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxDefaultMenuEquipment.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxDefaultMenuEquipment.Click += new System.EventHandler(this.checkBox_Click);
//
// checkBoxDefaultMenuAlarmList
//
@@ -560,6 +613,7 @@
this.groupBoxLevel3.BackGround = null;
this.groupBoxLevel3.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
this.groupBoxLevel3.BackImage = null;
+ this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuEthernet);
this.groupBoxLevel3.Controls.Add(this.textBoxLevel3);
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuUserGroupEditor);
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MainProductChange);
@@ -570,7 +624,7 @@
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MainClear);
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuHistoryLog);
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuInspectionLog);
- this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuStatus);
+ this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuEquipment);
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuAlarmLog);
this.groupBoxLevel3.Controls.Add(this.checkBoxL3MenuInformation);
this.groupBoxLevel3.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
@@ -581,12 +635,35 @@
this.groupBoxLevel3.Location = new System.Drawing.Point(566, 98);
this.groupBoxLevel3.Name = "groupBoxLevel3";
this.groupBoxLevel3.RoundRadius = 5;
- this.groupBoxLevel3.Size = new System.Drawing.Size(120, 472);
+ this.groupBoxLevel3.Size = new System.Drawing.Size(120, 486);
this.groupBoxLevel3.TabIndex = 220;
this.groupBoxLevel3.Text = "Level 3";
this.groupBoxLevel3.TextColor = System.Drawing.Color.White;
this.groupBoxLevel3.DoubleClick += new System.EventHandler(this.groupBox_DoubleClick);
//
+ // checkBoxL3MenuEthernet
+ //
+ this.checkBoxL3MenuEthernet.BackGround = this.groupBoxLevel3;
+ this.checkBoxL3MenuEthernet.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.checkBoxL3MenuEthernet.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxL3MenuEthernet.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxL3MenuEthernet.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxL3MenuEthernet.CheckBoxSymbolSize = 20;
+ this.checkBoxL3MenuEthernet.Checked = false;
+ this.checkBoxL3MenuEthernet.CheckLineWidth = 3;
+ this.checkBoxL3MenuEthernet.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxL3MenuEthernet.ImageCheckBox = null;
+ this.checkBoxL3MenuEthernet.ImageUnCheckBox = null;
+ this.checkBoxL3MenuEthernet.Location = new System.Drawing.Point(48, 446);
+ this.checkBoxL3MenuEthernet.Name = "checkBoxL3MenuEthernet";
+ this.checkBoxL3MenuEthernet.OverlapOptimize = true;
+ this.checkBoxL3MenuEthernet.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxL3MenuEthernet.TabIndex = 120;
+ this.checkBoxL3MenuEthernet.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxL3MenuEthernet.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxL3MenuEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxL3MenuEthernet.Click += new System.EventHandler(this.checkBox_Click);
+ //
// textBoxLevel3
//
this.textBoxLevel3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
@@ -611,7 +688,7 @@
this.checkBoxL3MenuUserGroupEditor.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuUserGroupEditor.ImageCheckBox = null;
this.checkBoxL3MenuUserGroupEditor.ImageUnCheckBox = null;
- this.checkBoxL3MenuUserGroupEditor.Location = new System.Drawing.Point(48, 247);
+ this.checkBoxL3MenuUserGroupEditor.Location = new System.Drawing.Point(48, 243);
this.checkBoxL3MenuUserGroupEditor.Name = "checkBoxL3MenuUserGroupEditor";
this.checkBoxL3MenuUserGroupEditor.OverlapOptimize = true;
this.checkBoxL3MenuUserGroupEditor.Size = new System.Drawing.Size(23, 23);
@@ -656,7 +733,7 @@
this.checkBoxL3MenuUserSetting.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuUserSetting.ImageCheckBox = null;
this.checkBoxL3MenuUserSetting.ImageUnCheckBox = null;
- this.checkBoxL3MenuUserSetting.Location = new System.Drawing.Point(48, 218);
+ this.checkBoxL3MenuUserSetting.Location = new System.Drawing.Point(48, 214);
this.checkBoxL3MenuUserSetting.Name = "checkBoxL3MenuUserSetting";
this.checkBoxL3MenuUserSetting.OverlapOptimize = true;
this.checkBoxL3MenuUserSetting.Size = new System.Drawing.Size(23, 23);
@@ -679,7 +756,7 @@
this.checkBoxL3MenuProduct.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuProduct.ImageCheckBox = null;
this.checkBoxL3MenuProduct.ImageUnCheckBox = null;
- this.checkBoxL3MenuProduct.Location = new System.Drawing.Point(48, 189);
+ this.checkBoxL3MenuProduct.Location = new System.Drawing.Point(48, 185);
this.checkBoxL3MenuProduct.Name = "checkBoxL3MenuProduct";
this.checkBoxL3MenuProduct.OverlapOptimize = true;
this.checkBoxL3MenuProduct.Size = new System.Drawing.Size(23, 23);
@@ -702,7 +779,7 @@
this.checkBoxL3MenuIOTest.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuIOTest.ImageCheckBox = null;
this.checkBoxL3MenuIOTest.ImageUnCheckBox = null;
- this.checkBoxL3MenuIOTest.Location = new System.Drawing.Point(48, 276);
+ this.checkBoxL3MenuIOTest.Location = new System.Drawing.Point(48, 272);
this.checkBoxL3MenuIOTest.Name = "checkBoxL3MenuIOTest";
this.checkBoxL3MenuIOTest.OverlapOptimize = true;
this.checkBoxL3MenuIOTest.Size = new System.Drawing.Size(23, 23);
@@ -770,7 +847,7 @@
this.checkBoxL3MenuHistoryLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuHistoryLog.ImageCheckBox = null;
this.checkBoxL3MenuHistoryLog.ImageUnCheckBox = null;
- this.checkBoxL3MenuHistoryLog.Location = new System.Drawing.Point(48, 305);
+ this.checkBoxL3MenuHistoryLog.Location = new System.Drawing.Point(48, 301);
this.checkBoxL3MenuHistoryLog.Name = "checkBoxL3MenuHistoryLog";
this.checkBoxL3MenuHistoryLog.OverlapOptimize = true;
this.checkBoxL3MenuHistoryLog.Size = new System.Drawing.Size(23, 23);
@@ -793,7 +870,7 @@
this.checkBoxL3MenuInspectionLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuInspectionLog.ImageCheckBox = null;
this.checkBoxL3MenuInspectionLog.ImageUnCheckBox = null;
- this.checkBoxL3MenuInspectionLog.Location = new System.Drawing.Point(48, 334);
+ this.checkBoxL3MenuInspectionLog.Location = new System.Drawing.Point(48, 330);
this.checkBoxL3MenuInspectionLog.Name = "checkBoxL3MenuInspectionLog";
this.checkBoxL3MenuInspectionLog.OverlapOptimize = true;
this.checkBoxL3MenuInspectionLog.Size = new System.Drawing.Size(23, 23);
@@ -803,28 +880,28 @@
this.checkBoxL3MenuInspectionLog.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
this.checkBoxL3MenuInspectionLog.Click += new System.EventHandler(this.checkBox_Click);
//
- // checkBoxL3MenuStatus
+ // checkBoxL3MenuEquipment
//
- this.checkBoxL3MenuStatus.BackGround = this.groupBoxLevel3;
- this.checkBoxL3MenuStatus.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
- this.checkBoxL3MenuStatus.CheckBoxBackColor = System.Drawing.Color.White;
- this.checkBoxL3MenuStatus.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
- this.checkBoxL3MenuStatus.CheckBoxOutlineColor = System.Drawing.Color.Black;
- this.checkBoxL3MenuStatus.CheckBoxSymbolSize = 20;
- this.checkBoxL3MenuStatus.Checked = false;
- this.checkBoxL3MenuStatus.CheckLineWidth = 3;
- this.checkBoxL3MenuStatus.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
- this.checkBoxL3MenuStatus.ImageCheckBox = null;
- this.checkBoxL3MenuStatus.ImageUnCheckBox = null;
- this.checkBoxL3MenuStatus.Location = new System.Drawing.Point(48, 421);
- this.checkBoxL3MenuStatus.Name = "checkBoxL3MenuStatus";
- this.checkBoxL3MenuStatus.OverlapOptimize = true;
- this.checkBoxL3MenuStatus.Size = new System.Drawing.Size(23, 23);
- this.checkBoxL3MenuStatus.TabIndex = 113;
- this.checkBoxL3MenuStatus.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.checkBoxL3MenuStatus.TextColorDisable = System.Drawing.Color.Gray;
- this.checkBoxL3MenuStatus.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
- this.checkBoxL3MenuStatus.Click += new System.EventHandler(this.checkBox_Click);
+ this.checkBoxL3MenuEquipment.BackGround = this.groupBoxLevel3;
+ this.checkBoxL3MenuEquipment.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.checkBoxL3MenuEquipment.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxL3MenuEquipment.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxL3MenuEquipment.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxL3MenuEquipment.CheckBoxSymbolSize = 20;
+ this.checkBoxL3MenuEquipment.Checked = false;
+ this.checkBoxL3MenuEquipment.CheckLineWidth = 3;
+ this.checkBoxL3MenuEquipment.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxL3MenuEquipment.ImageCheckBox = null;
+ this.checkBoxL3MenuEquipment.ImageUnCheckBox = null;
+ this.checkBoxL3MenuEquipment.Location = new System.Drawing.Point(48, 417);
+ this.checkBoxL3MenuEquipment.Name = "checkBoxL3MenuEquipment";
+ this.checkBoxL3MenuEquipment.OverlapOptimize = true;
+ this.checkBoxL3MenuEquipment.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxL3MenuEquipment.TabIndex = 113;
+ this.checkBoxL3MenuEquipment.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxL3MenuEquipment.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxL3MenuEquipment.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxL3MenuEquipment.Click += new System.EventHandler(this.checkBox_Click);
//
// checkBoxL3MenuAlarmLog
//
@@ -839,7 +916,7 @@
this.checkBoxL3MenuAlarmLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuAlarmLog.ImageCheckBox = null;
this.checkBoxL3MenuAlarmLog.ImageUnCheckBox = null;
- this.checkBoxL3MenuAlarmLog.Location = new System.Drawing.Point(48, 363);
+ this.checkBoxL3MenuAlarmLog.Location = new System.Drawing.Point(48, 359);
this.checkBoxL3MenuAlarmLog.Name = "checkBoxL3MenuAlarmLog";
this.checkBoxL3MenuAlarmLog.OverlapOptimize = true;
this.checkBoxL3MenuAlarmLog.Size = new System.Drawing.Size(23, 23);
@@ -862,7 +939,7 @@
this.checkBoxL3MenuInformation.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL3MenuInformation.ImageCheckBox = null;
this.checkBoxL3MenuInformation.ImageUnCheckBox = null;
- this.checkBoxL3MenuInformation.Location = new System.Drawing.Point(48, 392);
+ this.checkBoxL3MenuInformation.Location = new System.Drawing.Point(48, 388);
this.checkBoxL3MenuInformation.Name = "checkBoxL3MenuInformation";
this.checkBoxL3MenuInformation.OverlapOptimize = true;
this.checkBoxL3MenuInformation.Size = new System.Drawing.Size(23, 23);
@@ -877,6 +954,7 @@
this.groupBoxLevel2.BackGround = null;
this.groupBoxLevel2.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
this.groupBoxLevel2.BackImage = null;
+ this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuEthernet);
this.groupBoxLevel2.Controls.Add(this.textBoxLevel2);
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuUserGroupEditor);
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MainProductChange);
@@ -887,7 +965,7 @@
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MainClear);
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuHistoryLog);
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuInspectionLog);
- this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuStatus);
+ this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuEquipment);
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuAlarmLog);
this.groupBoxLevel2.Controls.Add(this.checkBoxL2MenuInformation);
this.groupBoxLevel2.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
@@ -898,12 +976,35 @@
this.groupBoxLevel2.Location = new System.Drawing.Point(440, 98);
this.groupBoxLevel2.Name = "groupBoxLevel2";
this.groupBoxLevel2.RoundRadius = 5;
- this.groupBoxLevel2.Size = new System.Drawing.Size(120, 472);
+ this.groupBoxLevel2.Size = new System.Drawing.Size(120, 486);
this.groupBoxLevel2.TabIndex = 219;
this.groupBoxLevel2.Text = "Level 2";
this.groupBoxLevel2.TextColor = System.Drawing.Color.White;
this.groupBoxLevel2.DoubleClick += new System.EventHandler(this.groupBox_DoubleClick);
//
+ // checkBoxL2MenuEthernet
+ //
+ this.checkBoxL2MenuEthernet.BackGround = this.groupBoxLevel2;
+ this.checkBoxL2MenuEthernet.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.checkBoxL2MenuEthernet.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxL2MenuEthernet.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxL2MenuEthernet.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxL2MenuEthernet.CheckBoxSymbolSize = 20;
+ this.checkBoxL2MenuEthernet.Checked = false;
+ this.checkBoxL2MenuEthernet.CheckLineWidth = 3;
+ this.checkBoxL2MenuEthernet.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxL2MenuEthernet.ImageCheckBox = null;
+ this.checkBoxL2MenuEthernet.ImageUnCheckBox = null;
+ this.checkBoxL2MenuEthernet.Location = new System.Drawing.Point(51, 446);
+ this.checkBoxL2MenuEthernet.Name = "checkBoxL2MenuEthernet";
+ this.checkBoxL2MenuEthernet.OverlapOptimize = true;
+ this.checkBoxL2MenuEthernet.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxL2MenuEthernet.TabIndex = 119;
+ this.checkBoxL2MenuEthernet.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxL2MenuEthernet.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxL2MenuEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxL2MenuEthernet.Click += new System.EventHandler(this.checkBox_Click);
+ //
// textBoxLevel2
//
this.textBoxLevel2.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
@@ -928,7 +1029,7 @@
this.checkBoxL2MenuUserGroupEditor.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuUserGroupEditor.ImageCheckBox = null;
this.checkBoxL2MenuUserGroupEditor.ImageUnCheckBox = null;
- this.checkBoxL2MenuUserGroupEditor.Location = new System.Drawing.Point(51, 247);
+ this.checkBoxL2MenuUserGroupEditor.Location = new System.Drawing.Point(51, 243);
this.checkBoxL2MenuUserGroupEditor.Name = "checkBoxL2MenuUserGroupEditor";
this.checkBoxL2MenuUserGroupEditor.OverlapOptimize = true;
this.checkBoxL2MenuUserGroupEditor.Size = new System.Drawing.Size(23, 23);
@@ -973,7 +1074,7 @@
this.checkBoxL2MenuUserSetting.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuUserSetting.ImageCheckBox = null;
this.checkBoxL2MenuUserSetting.ImageUnCheckBox = null;
- this.checkBoxL2MenuUserSetting.Location = new System.Drawing.Point(51, 218);
+ this.checkBoxL2MenuUserSetting.Location = new System.Drawing.Point(51, 214);
this.checkBoxL2MenuUserSetting.Name = "checkBoxL2MenuUserSetting";
this.checkBoxL2MenuUserSetting.OverlapOptimize = true;
this.checkBoxL2MenuUserSetting.Size = new System.Drawing.Size(23, 23);
@@ -996,7 +1097,7 @@
this.checkBoxL2MenuProduct.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuProduct.ImageCheckBox = null;
this.checkBoxL2MenuProduct.ImageUnCheckBox = null;
- this.checkBoxL2MenuProduct.Location = new System.Drawing.Point(51, 189);
+ this.checkBoxL2MenuProduct.Location = new System.Drawing.Point(51, 185);
this.checkBoxL2MenuProduct.Name = "checkBoxL2MenuProduct";
this.checkBoxL2MenuProduct.OverlapOptimize = true;
this.checkBoxL2MenuProduct.Size = new System.Drawing.Size(23, 23);
@@ -1019,7 +1120,7 @@
this.checkBoxL2MenuIOTest.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuIOTest.ImageCheckBox = null;
this.checkBoxL2MenuIOTest.ImageUnCheckBox = null;
- this.checkBoxL2MenuIOTest.Location = new System.Drawing.Point(51, 276);
+ this.checkBoxL2MenuIOTest.Location = new System.Drawing.Point(51, 272);
this.checkBoxL2MenuIOTest.Name = "checkBoxL2MenuIOTest";
this.checkBoxL2MenuIOTest.OverlapOptimize = true;
this.checkBoxL2MenuIOTest.Size = new System.Drawing.Size(23, 23);
@@ -1087,7 +1188,7 @@
this.checkBoxL2MenuHistoryLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuHistoryLog.ImageCheckBox = null;
this.checkBoxL2MenuHistoryLog.ImageUnCheckBox = null;
- this.checkBoxL2MenuHistoryLog.Location = new System.Drawing.Point(51, 305);
+ this.checkBoxL2MenuHistoryLog.Location = new System.Drawing.Point(51, 301);
this.checkBoxL2MenuHistoryLog.Name = "checkBoxL2MenuHistoryLog";
this.checkBoxL2MenuHistoryLog.OverlapOptimize = true;
this.checkBoxL2MenuHistoryLog.Size = new System.Drawing.Size(23, 23);
@@ -1110,7 +1211,7 @@
this.checkBoxL2MenuInspectionLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuInspectionLog.ImageCheckBox = null;
this.checkBoxL2MenuInspectionLog.ImageUnCheckBox = null;
- this.checkBoxL2MenuInspectionLog.Location = new System.Drawing.Point(51, 334);
+ this.checkBoxL2MenuInspectionLog.Location = new System.Drawing.Point(51, 330);
this.checkBoxL2MenuInspectionLog.Name = "checkBoxL2MenuInspectionLog";
this.checkBoxL2MenuInspectionLog.OverlapOptimize = true;
this.checkBoxL2MenuInspectionLog.Size = new System.Drawing.Size(23, 23);
@@ -1120,28 +1221,28 @@
this.checkBoxL2MenuInspectionLog.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
this.checkBoxL2MenuInspectionLog.Click += new System.EventHandler(this.checkBox_Click);
//
- // checkBoxL2MenuStatus
+ // checkBoxL2MenuEquipment
//
- this.checkBoxL2MenuStatus.BackGround = this.groupBoxLevel2;
- this.checkBoxL2MenuStatus.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
- this.checkBoxL2MenuStatus.CheckBoxBackColor = System.Drawing.Color.White;
- this.checkBoxL2MenuStatus.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
- this.checkBoxL2MenuStatus.CheckBoxOutlineColor = System.Drawing.Color.Black;
- this.checkBoxL2MenuStatus.CheckBoxSymbolSize = 20;
- this.checkBoxL2MenuStatus.Checked = false;
- this.checkBoxL2MenuStatus.CheckLineWidth = 3;
- this.checkBoxL2MenuStatus.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
- this.checkBoxL2MenuStatus.ImageCheckBox = null;
- this.checkBoxL2MenuStatus.ImageUnCheckBox = null;
- this.checkBoxL2MenuStatus.Location = new System.Drawing.Point(51, 421);
- this.checkBoxL2MenuStatus.Name = "checkBoxL2MenuStatus";
- this.checkBoxL2MenuStatus.OverlapOptimize = true;
- this.checkBoxL2MenuStatus.Size = new System.Drawing.Size(23, 23);
- this.checkBoxL2MenuStatus.TabIndex = 113;
- this.checkBoxL2MenuStatus.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.checkBoxL2MenuStatus.TextColorDisable = System.Drawing.Color.Gray;
- this.checkBoxL2MenuStatus.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
- this.checkBoxL2MenuStatus.Click += new System.EventHandler(this.checkBox_Click);
+ this.checkBoxL2MenuEquipment.BackGround = this.groupBoxLevel2;
+ this.checkBoxL2MenuEquipment.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.checkBoxL2MenuEquipment.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxL2MenuEquipment.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxL2MenuEquipment.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxL2MenuEquipment.CheckBoxSymbolSize = 20;
+ this.checkBoxL2MenuEquipment.Checked = false;
+ this.checkBoxL2MenuEquipment.CheckLineWidth = 3;
+ this.checkBoxL2MenuEquipment.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxL2MenuEquipment.ImageCheckBox = null;
+ this.checkBoxL2MenuEquipment.ImageUnCheckBox = null;
+ this.checkBoxL2MenuEquipment.Location = new System.Drawing.Point(51, 417);
+ this.checkBoxL2MenuEquipment.Name = "checkBoxL2MenuEquipment";
+ this.checkBoxL2MenuEquipment.OverlapOptimize = true;
+ this.checkBoxL2MenuEquipment.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxL2MenuEquipment.TabIndex = 113;
+ this.checkBoxL2MenuEquipment.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxL2MenuEquipment.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxL2MenuEquipment.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxL2MenuEquipment.Click += new System.EventHandler(this.checkBox_Click);
//
// checkBoxL2MenuAlarmLog
//
@@ -1156,7 +1257,7 @@
this.checkBoxL2MenuAlarmLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuAlarmLog.ImageCheckBox = null;
this.checkBoxL2MenuAlarmLog.ImageUnCheckBox = null;
- this.checkBoxL2MenuAlarmLog.Location = new System.Drawing.Point(51, 363);
+ this.checkBoxL2MenuAlarmLog.Location = new System.Drawing.Point(51, 359);
this.checkBoxL2MenuAlarmLog.Name = "checkBoxL2MenuAlarmLog";
this.checkBoxL2MenuAlarmLog.OverlapOptimize = true;
this.checkBoxL2MenuAlarmLog.Size = new System.Drawing.Size(23, 23);
@@ -1179,7 +1280,7 @@
this.checkBoxL2MenuInformation.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxL2MenuInformation.ImageCheckBox = null;
this.checkBoxL2MenuInformation.ImageUnCheckBox = null;
- this.checkBoxL2MenuInformation.Location = new System.Drawing.Point(51, 392);
+ this.checkBoxL2MenuInformation.Location = new System.Drawing.Point(51, 388);
this.checkBoxL2MenuInformation.Name = "checkBoxL2MenuInformation";
this.checkBoxL2MenuInformation.OverlapOptimize = true;
this.checkBoxL2MenuInformation.Size = new System.Drawing.Size(23, 23);
@@ -1194,6 +1295,7 @@
this.groupBoxLevel1.BackGround = null;
this.groupBoxLevel1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
this.groupBoxLevel1.BackImage = null;
+ this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuEthernet);
this.groupBoxLevel1.Controls.Add(this.textBoxLevel1);
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuUserGroupEditor);
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MainProductChange);
@@ -1204,7 +1306,7 @@
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MainClear);
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuHistoryLog);
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuInspectionLog);
- this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuStatus);
+ this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuEquipment);
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuAlarmLog);
this.groupBoxLevel1.Controls.Add(this.checkBoxL1MenuInformation);
this.groupBoxLevel1.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(92)))), ((int)(((byte)(118)))));
@@ -1215,12 +1317,35 @@
this.groupBoxLevel1.Location = new System.Drawing.Point(314, 98);
this.groupBoxLevel1.Name = "groupBoxLevel1";
this.groupBoxLevel1.RoundRadius = 5;
- this.groupBoxLevel1.Size = new System.Drawing.Size(120, 472);
+ this.groupBoxLevel1.Size = new System.Drawing.Size(120, 486);
this.groupBoxLevel1.TabIndex = 218;
this.groupBoxLevel1.Text = "Level 1";
this.groupBoxLevel1.TextColor = System.Drawing.Color.White;
this.groupBoxLevel1.DoubleClick += new System.EventHandler(this.groupBox_DoubleClick);
//
+ // checkBoxL1MenuEthernet
+ //
+ this.checkBoxL1MenuEthernet.BackGround = this.groupBoxLevel1;
+ this.checkBoxL1MenuEthernet.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.checkBoxL1MenuEthernet.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxL1MenuEthernet.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxL1MenuEthernet.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxL1MenuEthernet.CheckBoxSymbolSize = 20;
+ this.checkBoxL1MenuEthernet.Checked = false;
+ this.checkBoxL1MenuEthernet.CheckLineWidth = 3;
+ this.checkBoxL1MenuEthernet.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxL1MenuEthernet.ImageCheckBox = null;
+ this.checkBoxL1MenuEthernet.ImageUnCheckBox = null;
+ this.checkBoxL1MenuEthernet.Location = new System.Drawing.Point(50, 446);
+ this.checkBoxL1MenuEthernet.Name = "checkBoxL1MenuEthernet";
+ this.checkBoxL1MenuEthernet.OverlapOptimize = true;
+ this.checkBoxL1MenuEthernet.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxL1MenuEthernet.TabIndex = 118;
+ this.checkBoxL1MenuEthernet.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxL1MenuEthernet.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxL1MenuEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxL1MenuEthernet.Click += new System.EventHandler(this.checkBox_Click);
+ //
// textBoxLevel1
//
this.textBoxLevel1.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular);
@@ -1437,28 +1562,28 @@
this.checkBoxL1MenuInspectionLog.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
this.checkBoxL1MenuInspectionLog.Click += new System.EventHandler(this.checkBox_Click);
//
- // checkBoxL1MenuStatus
+ // checkBoxL1MenuEquipment
//
- this.checkBoxL1MenuStatus.BackGround = this.groupBoxLevel1;
- this.checkBoxL1MenuStatus.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
- this.checkBoxL1MenuStatus.CheckBoxBackColor = System.Drawing.Color.White;
- this.checkBoxL1MenuStatus.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
- this.checkBoxL1MenuStatus.CheckBoxOutlineColor = System.Drawing.Color.Black;
- this.checkBoxL1MenuStatus.CheckBoxSymbolSize = 20;
- this.checkBoxL1MenuStatus.Checked = false;
- this.checkBoxL1MenuStatus.CheckLineWidth = 3;
- this.checkBoxL1MenuStatus.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
- this.checkBoxL1MenuStatus.ImageCheckBox = null;
- this.checkBoxL1MenuStatus.ImageUnCheckBox = null;
- this.checkBoxL1MenuStatus.Location = new System.Drawing.Point(50, 417);
- this.checkBoxL1MenuStatus.Name = "checkBoxL1MenuStatus";
- this.checkBoxL1MenuStatus.OverlapOptimize = true;
- this.checkBoxL1MenuStatus.Size = new System.Drawing.Size(23, 23);
- this.checkBoxL1MenuStatus.TabIndex = 113;
- this.checkBoxL1MenuStatus.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.checkBoxL1MenuStatus.TextColorDisable = System.Drawing.Color.Gray;
- this.checkBoxL1MenuStatus.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
- this.checkBoxL1MenuStatus.Click += new System.EventHandler(this.checkBox_Click);
+ this.checkBoxL1MenuEquipment.BackGround = this.groupBoxLevel1;
+ this.checkBoxL1MenuEquipment.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.checkBoxL1MenuEquipment.CheckBoxBackColor = System.Drawing.Color.White;
+ this.checkBoxL1MenuEquipment.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxL1MenuEquipment.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxL1MenuEquipment.CheckBoxSymbolSize = 20;
+ this.checkBoxL1MenuEquipment.Checked = false;
+ this.checkBoxL1MenuEquipment.CheckLineWidth = 3;
+ this.checkBoxL1MenuEquipment.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxL1MenuEquipment.ImageCheckBox = null;
+ this.checkBoxL1MenuEquipment.ImageUnCheckBox = null;
+ this.checkBoxL1MenuEquipment.Location = new System.Drawing.Point(50, 417);
+ this.checkBoxL1MenuEquipment.Name = "checkBoxL1MenuEquipment";
+ this.checkBoxL1MenuEquipment.OverlapOptimize = true;
+ this.checkBoxL1MenuEquipment.Size = new System.Drawing.Size(23, 23);
+ this.checkBoxL1MenuEquipment.TabIndex = 113;
+ this.checkBoxL1MenuEquipment.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.checkBoxL1MenuEquipment.TextColorDisable = System.Drawing.Color.Gray;
+ this.checkBoxL1MenuEquipment.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ this.checkBoxL1MenuEquipment.Click += new System.EventHandler(this.checkBox_Click);
//
// checkBoxL1MenuAlarmLog
//
@@ -1660,7 +1785,7 @@
this.labelTitleMenuUserSetting.RoundRectFillColor = System.Drawing.Color.LightBlue;
this.labelTitleMenuUserSetting.Size = new System.Drawing.Size(132, 23);
this.labelTitleMenuUserSetting.TabIndex = 129;
- this.labelTitleMenuUserSetting.Text = "User setting";
+ this.labelTitleMenuUserSetting.Text = "User editing";
this.labelTitleMenuUserSetting.TextColor = System.Drawing.Color.White;
this.labelTitleMenuUserSetting.TextColorDisable = System.Drawing.Color.Gray;
this.labelTitleMenuUserSetting.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -1863,7 +1988,7 @@
private SmartX.SmartButton buttonSave;
private SmartX.SmartCheckBox checkBoxL1MenuInformation;
private SmartX.SmartCheckBox checkBoxL1MenuAlarmLog;
- private SmartX.SmartCheckBox checkBoxL1MenuStatus;
+ private SmartX.SmartCheckBox checkBoxL1MenuEquipment;
private SmartX.SmartCheckBox checkBoxL1MenuInspectionLog;
private SmartX.SmartCheckBox checkBoxL1MenuHistoryLog;
private SmartX.SmartCheckBox checkBoxL1MenuIOTest;
@@ -1894,7 +2019,7 @@
private SmartX.SmartCheckBox checkBoxDefaultMainClear;
private SmartX.SmartCheckBox checkBoxDefaultMenuEquipmentLog;
private SmartX.SmartCheckBox checkBoxDefaultMenuCheckLog;
- private SmartX.SmartCheckBox checkBoxDefaultMenuStatus;
+ private SmartX.SmartCheckBox checkBoxDefaultMenuEquipment;
private SmartX.SmartCheckBox checkBoxDefaultMenuAlarmList;
private SmartX.SmartCheckBox checkBoxDefaultMenuInformation;
private SmartX.SmartGroupBox groupBoxLevel3;
@@ -1906,7 +2031,7 @@
private SmartX.SmartCheckBox checkBoxL3MainClear;
private SmartX.SmartCheckBox checkBoxL3MenuHistoryLog;
private SmartX.SmartCheckBox checkBoxL3MenuInspectionLog;
- private SmartX.SmartCheckBox checkBoxL3MenuStatus;
+ private SmartX.SmartCheckBox checkBoxL3MenuEquipment;
private SmartX.SmartCheckBox checkBoxL3MenuAlarmLog;
private SmartX.SmartCheckBox checkBoxL3MenuInformation;
private SmartX.SmartGroupBox groupBoxLevel2;
@@ -1918,7 +2043,7 @@
private SmartX.SmartCheckBox checkBoxL2MainClear;
private SmartX.SmartCheckBox checkBoxL2MenuHistoryLog;
private SmartX.SmartCheckBox checkBoxL2MenuInspectionLog;
- private SmartX.SmartCheckBox checkBoxL2MenuStatus;
+ private SmartX.SmartCheckBox checkBoxL2MenuEquipment;
private SmartX.SmartCheckBox checkBoxL2MenuAlarmLog;
private SmartX.SmartCheckBox checkBoxL2MenuInformation;
private SmartX.SmartGroupBox groupBoxLevel1;
@@ -1932,5 +2057,10 @@
private System.Windows.Forms.TextBox textBoxLevel3;
private System.Windows.Forms.TextBox textBoxLevel2;
private SmartX.SmartKeyboard smartKeyboard;
+ private SmartX.SmartLabel smartLabel1;
+ private SmartX.SmartCheckBox checkBoxL3MenuEthernet;
+ private SmartX.SmartCheckBox checkBoxL2MenuEthernet;
+ private SmartX.SmartCheckBox checkBoxL1MenuEthernet;
+ private SmartX.SmartCheckBox checkBoxDefaultMenuEthernet;
}
}
diff --git a/INT_PT002/Controls/User/ControlMenuUserGroupEditor.cs b/INT_PT002/Controls/User/ControlMenuUserGroupEditor.cs
index 06d4226..88e36fc 100644
--- a/INT_PT002/Controls/User/ControlMenuUserGroupEditor.cs
+++ b/INT_PT002/Controls/User/ControlMenuUserGroupEditor.cs
@@ -84,7 +84,8 @@ namespace INT_PT002.Controls
this.checkBoxL1MenuInspectionLog.Checked = group.Level1.IsMenuInspectionLog;
this.checkBoxL1MenuAlarmLog.Checked = group.Level1.IsMenuAlarmLog;
this.checkBoxL1MenuInformation.Checked = group.Level1.IsMenuInformation;
- this.checkBoxL1MenuStatus.Checked = group.Level1.IsMenuStatus;
+ this.checkBoxL1MenuEquipment.Checked = group.Level1.IsMenuEquipment;
+ this.checkBoxL1MenuEthernet.Checked = group.Level1.IsMenuEthernet;
#endregion
#region Level2
@@ -100,7 +101,8 @@ namespace INT_PT002.Controls
this.checkBoxL2MenuInspectionLog.Checked = group.Level2.IsMenuInspectionLog;
this.checkBoxL2MenuAlarmLog.Checked = group.Level2.IsMenuAlarmLog;
this.checkBoxL2MenuInformation.Checked = group.Level2.IsMenuInformation;
- this.checkBoxL2MenuStatus.Checked = group.Level2.IsMenuStatus;
+ this.checkBoxL2MenuEquipment.Checked = group.Level2.IsMenuEquipment;
+ this.checkBoxL2MenuEthernet.Checked = group.Level2.IsMenuEthernet;
#endregion
#region Level3
@@ -116,7 +118,8 @@ namespace INT_PT002.Controls
this.checkBoxL3MenuInspectionLog.Checked = group.Level3.IsMenuInspectionLog;
this.checkBoxL3MenuAlarmLog.Checked = group.Level3.IsMenuAlarmLog;
this.checkBoxL3MenuInformation.Checked = group.Level3.IsMenuInformation;
- this.checkBoxL3MenuStatus.Checked = group.Level3.IsMenuStatus;
+ this.checkBoxL3MenuEquipment.Checked = group.Level3.IsMenuEquipment;
+ this.checkBoxL3MenuEthernet.Checked = group.Level3.IsMenuEthernet;
#endregion
#region Default
@@ -132,7 +135,8 @@ namespace INT_PT002.Controls
this.checkBoxDefaultMenuCheckLog.Checked = group.Admin.IsMenuInspectionLog;
this.checkBoxDefaultMenuAlarmList.Checked = group.Admin.IsMenuAlarmLog;
this.checkBoxDefaultMenuInformation.Checked = group.Admin.IsMenuInformation;
- this.checkBoxDefaultMenuStatus.Checked = group.Admin.IsMenuStatus;
+ this.checkBoxDefaultMenuEquipment.Checked = group.Admin.IsMenuEquipment;
+ this.checkBoxDefaultMenuEthernet.Checked = group.Admin.IsMenuEthernet;
#endregion
}
@@ -306,7 +310,8 @@ namespace INT_PT002.Controls
this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuInspectionLog = this.checkBoxL1MenuInspectionLog.Checked;
this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuAlarmLog = this.checkBoxL1MenuAlarmLog.Checked;
this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuInformation = this.checkBoxL1MenuInformation.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuStatus = this.checkBoxL1MenuStatus.Checked;
+ this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuEquipment = this.checkBoxL1MenuEquipment.Checked;
+ this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuEthernet = this.checkBoxL1MenuEthernet.Checked;
#endregion
#region Level2
@@ -322,7 +327,8 @@ namespace INT_PT002.Controls
this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuInspectionLog = this.checkBoxL2MenuInspectionLog.Checked;
this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuAlarmLog = this.checkBoxL2MenuAlarmLog.Checked;
this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuInformation = this.checkBoxL2MenuInformation.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuStatus = this.checkBoxL2MenuStatus.Checked;
+ this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuEquipment = this.checkBoxL2MenuEquipment.Checked;
+ this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuEthernet = this.checkBoxL2MenuEthernet.Checked;
#endregion
#region Level3
@@ -338,23 +344,39 @@ namespace INT_PT002.Controls
this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuInspectionLog = this.checkBoxL3MenuInspectionLog.Checked;
this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuAlarmLog = this.checkBoxL3MenuAlarmLog.Checked;
this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuInformation = this.checkBoxL3MenuInformation.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuStatus = this.checkBoxL3MenuStatus.Checked;
+ this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuEquipment = this.checkBoxL3MenuEquipment.Checked;
+ this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuEthernet = this.checkBoxL3MenuEthernet.Checked;
#endregion
#region Admin
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayProductChange = this.checkBoxDefaultMainProductChange.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayClear = this.checkBoxDefaultMainClear.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplaySubMenu = this.checkBoxDefaultMainSubMenu.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayProductChange = this.checkBoxDefaultMainProductChange.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayClear = this.checkBoxDefaultMainClear.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplaySubMenu = this.checkBoxDefaultMainSubMenu.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuRecipe = this.checkBoxDefaultMenuProduct.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserSetting = this.checkBoxDefaultMenuUserSetting.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserGroupEditor = this.checkBoxDefaultMenuUserGroupEditor.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuIOTest = this.checkBoxDefaultMenuIOTest.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuHistoryLog = this.checkBoxDefaultMenuEquipmentLog.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInspectionLog = this.checkBoxDefaultMenuCheckLog.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuAlarmLog = this.checkBoxDefaultMenuAlarmList.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInformation = this.checkBoxDefaultMenuInformation.Checked;
- this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuStatus = this.checkBoxDefaultMenuStatus.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuRecipe = this.checkBoxDefaultMenuProduct.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserSetting = this.checkBoxDefaultMenuUserSetting.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserGroupEditor = this.checkBoxDefaultMenuUserGroupEditor.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuIOTest = this.checkBoxDefaultMenuIOTest.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuHistoryLog = this.checkBoxDefaultMenuEquipmentLog.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInspectionLog = this.checkBoxDefaultMenuCheckLog.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuAlarmLog = this.checkBoxDefaultMenuAlarmList.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInformation = this.checkBoxDefaultMenuInformation.Checked;
+ //this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuStatus = this.checkBoxDefaultMenuStatus.Checked;
+
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayProductChange = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayClear = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplaySubMenu = true;
+
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuRecipe = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserSetting = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserGroupEditor = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuIOTest = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuHistoryLog = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInspectionLog = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuAlarmLog = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInformation = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuEquipment = true;
+ this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuEthernet = true;
#endregion
this.ParentForm.ParentForm.SaveUserGroupFile(this.ParentForm.ParentForm.CurrentUserGroup);
diff --git a/INT_PT002/Controls/User/ControlMenuUserMyPage.Designer.cs b/INT_PT002/Controls/User/ControlMenuUserMyPage.Designer.cs
new file mode 100644
index 0000000..988de1e
--- /dev/null
+++ b/INT_PT002/Controls/User/ControlMenuUserMyPage.Designer.cs
@@ -0,0 +1,336 @@
+namespace INT_PT002.Controls
+{
+ partial class ControlMenuUserMyPage
+ {
+ ///
+ /// 필수 디자이너 변수입니다.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 사용 중인 모든 리소스를 정리합니다.
+ ///
+ /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 구성 요소 디자이너에서 생성한 코드
+
+ ///
+ /// 디자이너 지원에 필요한 메서드입니다.
+ /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlMenuUserMyPage));
+ this.smartGroupBox1 = new SmartX.SmartGroupBox();
+ this.smartKeyboard = new SmartX.SmartKeyboard();
+ this.textBoxVerifyPassword = new System.Windows.Forms.TextBox();
+ this.smartLabel4 = new SmartX.SmartLabel();
+ this.textBoxNewPassword = new System.Windows.Forms.TextBox();
+ this.labelIDBackGround = new SmartX.SmartLabel();
+ this.smartLabel3 = new SmartX.SmartLabel();
+ this.smartLabel2 = new SmartX.SmartLabel();
+ this.labelID = new SmartX.SmartLabel();
+ this.labelTitleID = new SmartX.SmartLabel();
+ this.buttonSave = new SmartX.SmartButton();
+ this.smartGroupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // smartGroupBox1
+ //
+ this.smartGroupBox1.BackGround = null;
+ this.smartGroupBox1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartGroupBox1.BackImage = null;
+ this.smartGroupBox1.Controls.Add(this.smartKeyboard);
+ this.smartGroupBox1.Controls.Add(this.textBoxVerifyPassword);
+ this.smartGroupBox1.Controls.Add(this.smartLabel4);
+ this.smartGroupBox1.Controls.Add(this.textBoxNewPassword);
+ this.smartGroupBox1.Controls.Add(this.labelIDBackGround);
+ this.smartGroupBox1.Controls.Add(this.smartLabel3);
+ this.smartGroupBox1.Controls.Add(this.smartLabel2);
+ this.smartGroupBox1.Controls.Add(this.labelID);
+ this.smartGroupBox1.Controls.Add(this.labelTitleID);
+ this.smartGroupBox1.Controls.Add(this.buttonSave);
+ this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartGroupBox1.FrameLineThickness = 2;
+ this.smartGroupBox1.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.HeaderBar;
+ this.smartGroupBox1.HeaderHeightOffset = 9;
+ this.smartGroupBox1.Location = new System.Drawing.Point(0, 0);
+ this.smartGroupBox1.Name = "smartGroupBox1";
+ this.smartGroupBox1.RoundRadius = 5;
+ this.smartGroupBox1.Size = new System.Drawing.Size(909, 664);
+ this.smartGroupBox1.TabIndex = 4;
+ this.smartGroupBox1.Text = "User > User Editor";
+ this.smartGroupBox1.TextColor = System.Drawing.Color.White;
+ //
+ // smartKeyboard
+ //
+ this.smartKeyboard.BackGround = null;
+ this.smartKeyboard.BackGroundColor = System.Drawing.Color.LightBlue;
+ this.smartKeyboard.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.smartKeyboard.BorderStyle = SmartX.SmartKeyboard.BorderStyles.RoundRectFill;
+ this.smartKeyboard.ControlKeyDisable = false;
+ this.smartKeyboard.DesignMinimize = false;
+ this.smartKeyboard.HanYoungKeyDisable = true;
+ this.smartKeyboard.KeyBoardBackImage = null;
+ this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL;
+ this.smartKeyboard.KeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(93)))), ((int)(((byte)(123)))));
+ this.smartKeyboard.KeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ this.smartKeyboard.KeyOutLineWidth = 1;
+ this.smartKeyboard.KeyPressFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(38)))), ((int)(((byte)(46)))), ((int)(((byte)(60)))));
+ this.smartKeyboard.KeyPressImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage1")));
+ this.smartKeyboard.KeyPressImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage2")));
+ this.smartKeyboard.KeyPressImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage3")));
+ this.smartKeyboard.KeyPressOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(211)))), ((int)(((byte)(211)))), ((int)(((byte)(213)))));
+ this.smartKeyboard.KeyPressTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(197)))), ((int)(((byte)(197)))), ((int)(((byte)(197)))));
+ this.smartKeyboard.KeyTextColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
+ this.smartKeyboard.KeyTextFont = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.smartKeyboard.KeyUpImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage1")));
+ this.smartKeyboard.KeyUpImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage2")));
+ this.smartKeyboard.KeyUpImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage3")));
+ this.smartKeyboard.Location = new System.Drawing.Point(100, 263);
+ this.smartKeyboard.MarginLeftRight = 7;
+ this.smartKeyboard.MarginTopBottom = 7;
+ this.smartKeyboard.Name = "smartKeyboard";
+ this.smartKeyboard.OverlapOptimize = true;
+ this.smartKeyboard.Radius = 5;
+ this.smartKeyboard.RoundedCorners = false;
+ this.smartKeyboard.RoundRectFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(21)))), ((int)(((byte)(50)))));
+ this.smartKeyboard.Size = new System.Drawing.Size(715, 282);
+ this.smartKeyboard.SizeRunTime = new System.Drawing.Size(715, 282);
+ this.smartKeyboard.TabIndex = 120;
+ this.smartKeyboard.TABKeyDisable = true;
+ this.smartKeyboard.TargetInputObject = null;
+ this.smartKeyboard.Text = "smartKeyboard1";
+ this.smartKeyboard.TextColor = System.Drawing.Color.Black;
+ this.smartKeyboard.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartKeyboard.ThemeStyle = SmartX.SmartKeyboard.KEYBOARDTHEMESTYLE.STANDARD4;
+ this.smartKeyboard.OnXKeyClick += new System.EventHandler(this.smartKeyboard_OnXKeyClick);
+ //
+ // textBoxVerifyPassword
+ //
+ this.textBoxVerifyPassword.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.textBoxVerifyPassword.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular);
+ this.textBoxVerifyPassword.Location = new System.Drawing.Point(268, 221);
+ this.textBoxVerifyPassword.Name = "textBoxVerifyPassword";
+ this.textBoxVerifyPassword.PasswordChar = '*';
+ this.textBoxVerifyPassword.Size = new System.Drawing.Size(436, 29);
+ this.textBoxVerifyPassword.TabIndex = 108;
+ this.textBoxVerifyPassword.Text = "AAAAAAAAAAAAAAAAAAAA";
+ this.textBoxVerifyPassword.GotFocus += new System.EventHandler(this.textBoxVerifyPassword_GotFocus);
+ //
+ // smartLabel4
+ //
+ this.smartLabel4.BackGround = null;
+ this.smartLabel4.BackGroundColor = System.Drawing.Color.White;
+ this.smartLabel4.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartLabel4.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel4.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.smartLabel4.LineSpacing = 0F;
+ this.smartLabel4.Location = new System.Drawing.Point(267, 216);
+ this.smartLabel4.Name = "smartLabel4";
+ this.smartLabel4.OverlapOptimize = true;
+ this.smartLabel4.PasswordChar = '\0';
+ this.smartLabel4.Radius = 3;
+ this.smartLabel4.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel4.Size = new System.Drawing.Size(439, 34);
+ this.smartLabel4.TabIndex = 109;
+ this.smartLabel4.TextColor = System.Drawing.Color.Black;
+ this.smartLabel4.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.smartLabel4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel4.Wordwrap = false;
+ //
+ // textBoxNewPassword
+ //
+ this.textBoxNewPassword.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.textBoxNewPassword.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular);
+ this.textBoxNewPassword.Location = new System.Drawing.Point(268, 179);
+ this.textBoxNewPassword.Name = "textBoxNewPassword";
+ this.textBoxNewPassword.PasswordChar = '*';
+ this.textBoxNewPassword.Size = new System.Drawing.Size(436, 29);
+ this.textBoxNewPassword.TabIndex = 106;
+ this.textBoxNewPassword.Text = "AAAAAAAAAAAAAAAAAAAA";
+ this.textBoxNewPassword.GotFocus += new System.EventHandler(this.textBoxNewPassword_GotFocus);
+ //
+ // labelIDBackGround
+ //
+ this.labelIDBackGround.BackGround = null;
+ this.labelIDBackGround.BackGroundColor = System.Drawing.Color.White;
+ this.labelIDBackGround.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelIDBackGround.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelIDBackGround.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.labelIDBackGround.LineSpacing = 0F;
+ this.labelIDBackGround.Location = new System.Drawing.Point(267, 174);
+ this.labelIDBackGround.Name = "labelIDBackGround";
+ this.labelIDBackGround.OverlapOptimize = true;
+ this.labelIDBackGround.PasswordChar = '\0';
+ this.labelIDBackGround.Radius = 3;
+ this.labelIDBackGround.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelIDBackGround.Size = new System.Drawing.Size(439, 34);
+ this.labelIDBackGround.TabIndex = 107;
+ this.labelIDBackGround.TextColor = System.Drawing.Color.Black;
+ this.labelIDBackGround.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelIDBackGround.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelIDBackGround.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelIDBackGround.Wordwrap = false;
+ //
+ // smartLabel3
+ //
+ this.smartLabel3.BackGround = null;
+ this.smartLabel3.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartLabel3.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartLabel3.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel3.LineSpacing = 0F;
+ this.smartLabel3.Location = new System.Drawing.Point(102, 216);
+ this.smartLabel3.Name = "smartLabel3";
+ this.smartLabel3.OverlapOptimize = true;
+ this.smartLabel3.PasswordChar = '\0';
+ this.smartLabel3.Radius = 3;
+ this.smartLabel3.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel3.Size = new System.Drawing.Size(155, 34);
+ this.smartLabel3.TabIndex = 85;
+ this.smartLabel3.Text = "Verify Password";
+ this.smartLabel3.TextColor = System.Drawing.Color.White;
+ this.smartLabel3.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.smartLabel3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel3.Wordwrap = false;
+ //
+ // smartLabel2
+ //
+ this.smartLabel2.BackGround = null;
+ this.smartLabel2.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.smartLabel2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartLabel2.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel2.LineSpacing = 0F;
+ this.smartLabel2.Location = new System.Drawing.Point(102, 173);
+ this.smartLabel2.Name = "smartLabel2";
+ this.smartLabel2.OverlapOptimize = true;
+ this.smartLabel2.PasswordChar = '\0';
+ this.smartLabel2.Radius = 3;
+ this.smartLabel2.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel2.Size = new System.Drawing.Size(155, 34);
+ this.smartLabel2.TabIndex = 84;
+ this.smartLabel2.Text = "New Password";
+ this.smartLabel2.TextColor = System.Drawing.Color.White;
+ this.smartLabel2.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel2.Wordwrap = false;
+ //
+ // labelID
+ //
+ this.labelID.BackGround = null;
+ this.labelID.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.labelID.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelID.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelID.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular);
+ this.labelID.LineSpacing = 0F;
+ this.labelID.Location = new System.Drawing.Point(266, 131);
+ this.labelID.Name = "labelID";
+ this.labelID.OverlapOptimize = true;
+ this.labelID.PasswordChar = '\0';
+ this.labelID.Radius = 3;
+ this.labelID.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelID.Size = new System.Drawing.Size(340, 34);
+ this.labelID.TabIndex = 83;
+ this.labelID.Text = "ID";
+ this.labelID.TextColor = System.Drawing.Color.White;
+ this.labelID.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelID.Wordwrap = false;
+ //
+ // labelTitleID
+ //
+ this.labelTitleID.BackGround = null;
+ this.labelTitleID.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.labelTitleID.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitleID.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleID.LineSpacing = 0F;
+ this.labelTitleID.Location = new System.Drawing.Point(102, 130);
+ this.labelTitleID.Name = "labelTitleID";
+ this.labelTitleID.OverlapOptimize = true;
+ this.labelTitleID.PasswordChar = '\0';
+ this.labelTitleID.Radius = 3;
+ this.labelTitleID.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleID.Size = new System.Drawing.Size(155, 34);
+ this.labelTitleID.TabIndex = 82;
+ this.labelTitleID.Text = "ID";
+ this.labelTitleID.TextColor = System.Drawing.Color.White;
+ this.labelTitleID.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTitleID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleID.Wordwrap = false;
+ //
+ // buttonSave
+ //
+ this.buttonSave.BackGround = null;
+ this.buttonSave.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.buttonSave.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonSave.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonSave.ButtonImageAutoSize = true;
+ this.buttonSave.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonSave.ButtonText = "Change";
+ this.buttonSave.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonSave.GroupID = 0;
+ this.buttonSave.ImageDisable = null;
+ this.buttonSave.ImageDown = null;
+ this.buttonSave.ImageUp = null;
+ this.buttonSave.Location = new System.Drawing.Point(715, 174);
+ this.buttonSave.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonSave.Name = "buttonSave";
+ this.buttonSave.NestedClickEventPrevent = false;
+ this.buttonSave.OutlinePixel = 2;
+ this.buttonSave.OverlapOptimize = true;
+ this.buttonSave.RepeatInterval = 200;
+ this.buttonSave.RepeatIntervalAccelerate = null;
+ this.buttonSave.RoundSize = 20;
+ this.buttonSave.SafeInterval = 200;
+ this.buttonSave.Size = new System.Drawing.Size(100, 77);
+ this.buttonSave.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonSave.TabIndex = 79;
+ this.buttonSave.Text = null;
+ this.buttonSave.TextColor = System.Drawing.Color.White;
+ this.buttonSave.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonSave.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonSave.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonSave.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonSave.Click += new System.EventHandler(this.buttonChangePassword_Click);
+ //
+ // ControlMenuUserMyPage
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.Controls.Add(this.smartGroupBox1);
+ this.Name = "ControlMenuUserMyPage";
+ this.Size = new System.Drawing.Size(909, 664);
+ this.smartGroupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private SmartX.SmartGroupBox smartGroupBox1;
+ private SmartX.SmartButton buttonSave;
+ private SmartX.SmartLabel labelTitleID;
+ private SmartX.SmartLabel labelID;
+ private SmartX.SmartLabel smartLabel3;
+ private SmartX.SmartLabel smartLabel2;
+ private System.Windows.Forms.TextBox textBoxVerifyPassword;
+ private SmartX.SmartLabel smartLabel4;
+ private System.Windows.Forms.TextBox textBoxNewPassword;
+ private SmartX.SmartLabel labelIDBackGround;
+ private SmartX.SmartKeyboard smartKeyboard;
+ }
+}
diff --git a/INT_PT002/Controls/User/ControlMenuUserMyPage.cs b/INT_PT002/Controls/User/ControlMenuUserMyPage.cs
new file mode 100644
index 0000000..759d838
--- /dev/null
+++ b/INT_PT002/Controls/User/ControlMenuUserMyPage.cs
@@ -0,0 +1,165 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using INT_PT002.Forms;
+using INT_PT002.Part11_UserManager;
+using INT_PT002.DataStore;
+using INT_PT002.DialogForms;
+
+namespace INT_PT002.Controls
+{
+ public partial class ControlMenuUserMyPage : UserControl
+ {
+ #region Field
+ private FormMenu m_ParentForm;
+ private int m_FirstLineNumber;
+ #endregion
+
+ #region Constructor
+ public ControlMenuUserMyPage(FormMenu parent)
+ {
+ InitializeComponent();
+
+ this.ParentForm = parent;
+
+ this.Initialize();
+ this.DefaultSetting();
+ }
+ #endregion
+
+ #region Property
+ public FormMenu ParentForm
+ {
+ get { return this.m_ParentForm; }
+ private set { this.m_ParentForm = value; }
+ }
+
+ public int FirstLineNumber
+ {
+ get { return this.m_FirstLineNumber; }
+ set { this.m_FirstLineNumber = value; }
+ }
+ #endregion
+
+ #region Method
+ private void Initialize()
+ {
+ this.smartGroupBox1.Text = "User > UserEditor";
+ }
+ public void DefaultSetting()
+ {
+ this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL;
+ this.smartKeyboard.Show();
+ }
+
+ private void UpdateDisplayID()
+ {
+ this.labelID.Text = this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ID;
+ }
+
+ public void CallBackUserListModifyInfoDataEvent(UserManager.UserMgr_user_info_t user)
+ {
+ try
+ {
+ if (user.status == 0)
+ {
+ string code = "", message1 = "", message2 = "";
+
+ switch (this.ParentForm.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ code = "비밀번호 변경";
+ message1 = "비밀번호가 변경되었습니다.";
+ message2 = "";
+ break;
+ case Define.E_LanguageID.English:
+ code = "Change Password";
+ message1 = "Password has been changed.";
+ message2 = "";
+ break;
+ default:
+ break;
+ }
+
+ // 비밀번호가 변경되었습니다.
+ DialogFormMessage dlg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, 0);
+ dlg.ShowDialog();
+ }
+ else
+ {
+ DialogFormMessage myMsg = new DialogFormMessage(null, user.status, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+ }
+ }
+ catch (Exception ex)
+ {
+ FormMain.Exception(ex);
+ }
+ }
+
+ public void DisplayRefresh()
+ {
+ this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplayMode = Define.E_DisplayModeStore.UserMyPage;
+ this.ParentForm.ParentForm.SetDisplayMode(Define.E_EquipmentMode.Menu);
+
+ this.UpdateDisplayID();
+
+ this.textBoxNewPassword.Text = "";
+ this.textBoxVerifyPassword.Text = "";
+ }
+ #endregion
+
+ #region Event Handler
+ private void smartKeyboard_OnXKeyClick(object sender, EventArgs e)
+ {
+
+ }
+
+ private void textBoxNewPassword_GotFocus(object sender, EventArgs e)
+ {
+ this.smartKeyboard.TargetInputObject = this.textBoxNewPassword;
+
+ this.textBoxNewPassword.Select(this.textBoxNewPassword.Text.Length, 0);
+ }
+ private void textBoxVerifyPassword_GotFocus(object sender, EventArgs e)
+ {
+ this.smartKeyboard.TargetInputObject = this.textBoxVerifyPassword;
+
+ this.textBoxVerifyPassword.Select(this.textBoxVerifyPassword.Text.Length, 0);
+ }
+
+ private void buttonChangePassword_Click(object sender, EventArgs e)
+ {
+ string detail = "";
+
+ // Check Password
+ if (this.textBoxNewPassword.Text.Length < 6 || this.textBoxVerifyPassword.Text.Length < 6)
+ {
+ // PASSWORD : 6~20자 입력하세요
+ DialogFormMessage msg = new DialogFormMessage(null, 9, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ msg.ShowDialog();
+
+ return;
+ }
+
+ if (this.textBoxNewPassword.Text != this.textBoxVerifyPassword.Text)
+ {
+ // 비밀번호가 동일하지 않습니다
+ DialogFormMessage myMsg = new DialogFormMessage(null, 17, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+ else
+ {
+ UserManager.UserManager_UserModifyPW(this.labelID.Text, this.textBoxVerifyPassword.Text);
+ }
+ }
+ #endregion
+ }
+}
diff --git a/INT_PT002/Controls/User/ControlMenuUserMyPage.resx b/INT_PT002/Controls/User/ControlMenuUserMyPage.resx
new file mode 100644
index 0000000..b5fd55f
--- /dev/null
+++ b/INT_PT002/Controls/User/ControlMenuUserMyPage.resx
@@ -0,0 +1,538 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ 6nc2xOg6Bq4AAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAHUAAAA7CAYAAABFVsWgAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
+ DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
+ bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE
+ sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs
+ AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4
+ JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR
+ 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd
+ li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF
+ ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX
+ wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF
+ hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55
+ 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ
+ VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB
+ 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC
+ qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE
+ j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I
+ 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9
+ rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG
+ fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp
+ B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ
+ yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC
+ YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln
+ yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v
+ vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp
+ vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L
+ Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA
+ bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z
+ llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW
+ ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s
+ xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6
+ eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw
+ YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR
+ XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm
+ WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl
+ xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2
+ dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8
+ V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za
+ Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v
+ Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb
+ PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/
+ 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h
+ /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr
+ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
+ fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
+ 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAABKhJREFUeF7tnElLK0EQx/0GIrgf3Pd9XxONJm64HcT9oAdR
+ BMUNRERwB09eVEQUDyqKCB78aO8L1Hv/hg6dmXqaPJfkNXX4MZNMd9WYX1fPeKk4+hVHgl24pLa0tFBV
+ VRWVlJRQYWEhFRQUUFFRkRBF4EGTn59Pubm5QZz+QFCq11tLlZWVVF5eTmVlZUoqAkIqAuXl5QlRRovM
+ yclRx6ysLEpJSXHJDUqtqKhQQrVMVGt9fT01NDRQbW2toq6uTogy8IDiQ+FBblJSEsXHx7ul+v2dqiJR
+ 3sXFxdTa2kpdXV0UCASoo6PjTxV7yePxqKMQXeAGhYYizMzMVJUKqbu7u6FSsQKys7NVpba1tdHAwAAN
+ DQ1RX1+fEuvz+YQo097eroCfxsZGtaOiUlNTU1W1uqSinFGlGIwKHRwcpP7+furs7AyujubmZiFGqKmp
+ oerqauULj0g8Kl1SUc4wj0EQCbFYHQhg7uVC9IEL/b6DyoUvuHJJRSVCKuSivPVz1HxJEmIHLRVCe3p6
+ qLu72y3V6/WoFyQMhEysAIjGZy6oEF20VL/fT729vQqXVLzZ4t8YlDbOUa0iNXYJWypelDBBpMY+ItVC
+ RKqFiFQLEakWIlItRKRaiEi1EJFqISLVQkSqhYhUCxGpFiJSLUSkWohItRCRaiEi1UJEqoWIVAsRqRYi
+ Ui1EpFqISLUQkWohItVCRKqFiFQLEakWIlItRKRaiEi1EJFqISLVQkSqhYhUCxGpFhK2VPQmxATI1F3O
+ RGpsgg51cKP7KLFS0UcJ7V/RHg39fiEVR5Eam2ip71aqz9eumheiMyUGNzU1KdBXCaK/C+6GPwOXg4Ob
+ GwlczJ8CPQnhCd3o0AwUPSTRINQlNRDwU1pamhKLJlnoJorVgMkA598Bng1fCZeDg5sbCVzMn0D7KC0t
+ VX0k0eV1ZGSExsbG3FLRizAxMZHS09NVt2c8X9GrEKC9nT4CSP8MOo4T5EBjYg78EX/DvE+OcHJzcU10
+ jvfyADPXV6JjIz+komKx9U5NTdH8/DwtLi7yUhMSEig5OVmJRRBsv+giqo9YGeGCrUHDXdfbu0a3PAV4
+ lkeCnmfG03m4ezDHRZrXmUdjxjcxf4dw4GJokBvvOpCJXsxzc3O0tbVF+/v7CpdUU2xGRob6A4aHh2l0
+ dJQmJiZofHw8CD6bmNc+wjkXTE5OqhXnZHp6OgRuDOaa6Jhcbs1HuZ05nTnM78LJ96+Y9wlwPzMzM7Sw
+ sEAbGxt0fHxMZ2dndHl5Sefn53+XijdgPDOwV8/OztLS0hKtra3R8vIyraysqPP19XUWXHPCjePATb4H
+ N8ck3HFOzByRwMUCn/kN3gM5Nzc3aXt7mw4PD+n09JSur6/p4eGBHh8f6erqKig0RCqAWIDVuLq6Sjs7
+ O3RwcKCOe3t7KuBnODo6CsJdDwcuRiTxnHP1d+bnj9AxuDgAVQTMa5Fi5kCsk5MTJfPi4oJub2/p6emJ
+ Xl5eQmRqQqRqbm5uWO7u7tTqADg30d9/hHOeCTeeg5ur4cY74eZpuPEc3FzN/f29+uG5eZFgxkNFPj8/
+ 0+vrK729vbmcmbBShf+ZOPoNW3IHcw6DsF8AAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAO4AAAA7CAYAAAB8Hba+AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
+ DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
+ bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE
+ sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs
+ AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4
+ JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR
+ 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd
+ li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF
+ ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX
+ wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF
+ hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55
+ 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ
+ VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB
+ 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC
+ qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE
+ j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I
+ 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9
+ rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG
+ fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp
+ B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ
+ yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC
+ YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln
+ yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v
+ vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp
+ vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L
+ Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA
+ bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z
+ llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW
+ ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s
+ xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6
+ eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw
+ YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR
+ XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm
+ WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl
+ xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2
+ dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8
+ V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za
+ Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v
+ Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb
+ PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/
+ 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h
+ /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr
+ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
+ fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
+ 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABPlJREFUeF7t2UkvbFsY
+ xnFfQN+Uvi19T+m7KkX0QogIMWFCCGIkrkQIMyYGxEATEQOJb6BvDkEIX+AkZ2J+v8B777OSXaWoe+6Z
+ KLXkGfxSp2ST/drnX2vtzUf+9hEi0suHcMvKyiQ7O1vMZrMkJCRIXFycxMbGSkxMjDZwvvHx8er8k5KS
+ JDk5WVJSUiQ1NdUB7/F1zJmYmKjVrNHR0Q7GrL+bV+dZ3/vO19a4ppGRkRIeHi6hoaESFRUllZWVLo2C
+ S7iFhYWSmZkpGRkZ6heA4fHLMYb3VsZ/XOOCAs4ZcP64gL9jzOjtcxr+a17M8X/zfpdZjXndzfiWTvMa
+ c+JDBgEjWpPJJP7+/lJeXu4+XIvF4og2PT1d8vPzpbi42KGoqEgdQ0SfB4tnQUGB5Obmqg4RckhIiAQE
+ BMjg4KBruHZ7rWO7gYMrKiqkvr5e6urqxGazSXV1tVRVVRGRB2BrXFpaquJFuNg2BwYGSnBwsGxsbDjD
+ ReU4ICcnR0Xa2toq7e3t0tTU5IjXarWSF8K1ec/dceT9ampqHLA1RrjY7mPbjGj9/Pxcw0WwWHFROVba
+ trY2aWlpkdraWvUJgBUYD63Iu+DiuuPuWNILbk3xkBi3r+jTuI1dX193hltUZJG0tDT1DYgV8eITAO/f
+ 7r2J6POhNzxjysrKUqsuFlR8IGMBdVlxESjCLSkpUcs0tltYafFQyt0PJqLPZYSbl5en7nmxoNrtdtnc
+ 3HSGi5qxVUaoCBbxom4s1+5+KBF9LiNcvOK5E541NTY2yvb2tmu4+JstQkXdOJDhEn0dhkukIYZLpCGG
+ S6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGG
+ S6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGG
+ S6QhhkukIYZLpCGGS6ShPw7XbDYzXCIv8Yfhlqlw8Q0ItqqqiuESfSEEm5mZKXl5eapHhNvQ0CBbW1vO
+ cCsqyiUpKUkKCgrU6osD8cpwib4GgkW4CBg9Itrm5mbZ2dlxhoulOC4uTrKzs1WspaWlisViUTETkWcg
+ VECL6enp6t82m01aWlqks7NT9vb2nOHa7XYxmUySmJgoqampqnR8I/bYRORZ6A/RokXEjNW2q6tL+vr6
+ 5ODgwBluR0eHBAUFSUREhMTGxqqA8ZQZcO9LRJ6BW1bjFeHiYXF3d7cMDQ3J6OiobGxsOMOdnf1L/Pz8
+ VLxhYWGSkJCg9tjvl3Ei+lzGVhm3rFarVXp7e2ViYuLfRmdlbm7ONVxA2b6+vhIaGqrubZuamtSeGrUT
+ kef09PRIf3+/DA8Pq2BXVlZkdXVVDg8PVasu4f74canuc7FM49HzwMCAjIyMyPj4uExOThKRh0xNTcn0
+ 9LQsLS3J2tqa+tvt/v6+PDw8fAwXfv36qWJF9WNjYzIzMyPz8/OysLBARB6yuLgoy8vLsr6+Lru7u3J6
+ euoSLbiEC6+vr/L09CSXl5cOFxcXcn5+rpydnXk1nCPO9/r6Wm5vb+X+/l4eHx/l+flZXl5eHPAec+IX
+ cnd3Jzc3N3J1deUyqw7z4nxx7oB5MQ/mejvvd5kV5/jdr+3JyYkcHx/L0dGResUM8L7TD+ESkbfzkX8A
+ aDYV804BSLEAAAAASUVORK5CYII=
+
+
+
+
+ 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
+ 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA7NJREFUaEPtm0kvZGEU
+ hm3M8zzPhJjnGBfmeWZhShAWBDGEIIZE0MQsodHSId3KtLLwA/yyt70nubhdtejlR39JPdetiu/me845
+ 99bmLTvg9fWf8Ho0f2CxWPDy8iJ/Ly8vcXp6iqOjI+zv72Nvb08Zdnd3sbOzI2xtbWFtbQ1zc3MYGxvD
+ 6uqq8Lfb6/H9DQWfn5/x9PSE+/t7XF1d4ezsDMfHxzg8PMTBwYFSGA2g+ObmJpaWljA6OoqWlhZkZGRg
+ amrKtixFHx8fRfL6+lo6yqqxYsvLy1hcXMTCwoKSzM/PY3Z2FuPj4+jt7UVZWRni4uIQHBwsXTfJUvT8
+ /BwXFxc4OTnB9va2VGliYgLDw8Po7+9HX1+f0vT09KCzsxPV1dVIS0tDVFQU/P39RdgYaZF9eLjH+vo6
+ NjY2pIuTk5MYGBiQxY2NjaitrUVNTY2SUM6AHc3Ly0NiYiLCw8Ph6+sLDw8Psyw7OzMzg+npaYyMjEiV
+ mpqaUF5ejpKSEhQVFaGgoEB5cnNzpavx8fEICQmBt7c33N3d8e3bprmzQ0NDGBwcRHd3t3SztLRULpCT
+ kyNkZ2crDfeYmZmJlJSUt/vVy8sLbm5u1mNMya6uLrS2tqKqqko6ypGwdWFVMWRjY2PfZF1dXbGysvIu
+ e3dnkfuTcHwrKipkdDkWti6qKv8ke3t7g/b2dnR0dMgI81790rJtbW0i/OVlLRYtq2VVRstqWS2rZZVF
+ y2pZLatllUXLalktq2WVRctqWS2rZZVFy2pZLatllUXLalktq2WVRcv+97KMBH01WU9PT2vZm5vfkuRk
+ dxsaGiQW91llk5OTERMTg6CgIJF1cXGRiOKb7K9f16ivr0dzczPq6uok3VZYWPjpZBm7TUpKQnR0NAIC
+ AiS3aCX78+elCDLsyBEuLi5Gfn6+ROSysrI+Bewqc4sJCQmIiIiAn5+fRPmcnZ3Nst+/nyA1NVWqw4Ws
+ UHp6uiwmPFcZ7pH7ZxqVI2yENNlVR0dHc3bxx48Lyecy4MhEJ6tjwAuojLFP7pvjGxoaKl1lGtXJyQkO
+ Dg4Sp3+TZVAzMDBQKsJ/DgsLk7xuZGSkwEKoCvfHseWe+VAyMsYcX4ra29ubZQkfTj4+PgIXsDpMYvNG
+ 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
+ vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp
+ vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L
+ Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA
+ bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z
+ llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW
+ ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s
+ xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6
+ eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw
+ YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR
+ XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm
+ WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl
+ xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2
+ dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8
+ V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za
+ Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v
+ 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
+ rkJggg==
+
+
+
+ WEBPAD
+
+
\ No newline at end of file
diff --git a/INT_PT002/Controls/User/ControlMenuUserUserEditor.Designer.cs b/INT_PT002/Controls/User/ControlMenuUserUserEditor.Designer.cs
index c99c11a..7a44e29 100644
--- a/INT_PT002/Controls/User/ControlMenuUserUserEditor.Designer.cs
+++ b/INT_PT002/Controls/User/ControlMenuUserUserEditor.Designer.cs
@@ -30,8 +30,15 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlMenuUserUserEditor));
this.smartGroupBox1 = new SmartX.SmartGroupBox();
+ this.smartSeparatorLine1 = new SmartX.SmartSeparatorLine();
+ this.labelTitleContents = new SmartX.SmartLabel();
+ this.labelNumberOfLoginFailures = new SmartX.SmartLabel();
+ this.labelTitleNumberOfLoginFailures = new SmartX.SmartLabel();
+ this.smartLabel6 = new SmartX.SmartLabel();
+ this.labelAutomaticLogoutTime = new SmartX.SmartLabel();
+ this.labelTitleAutomaticLogoutTime = new SmartX.SmartLabel();
this.smartKeyboard = new SmartX.SmartKeyboard();
- this.buttonPasswordEdit = new SmartX.SmartButton();
+ this.buttonPasswordReset = new SmartX.SmartButton();
this.buttonIDEdit = new SmartX.SmartButton();
this.textBoxPassword = new System.Windows.Forms.TextBox();
this.labelPasswordBackGround = new SmartX.SmartLabel();
@@ -44,6 +51,7 @@
this.labelAccessRight = new SmartX.SmartLabel();
this.labelTitleAccessRight = new SmartX.SmartLabel();
this.groupBoxAccessRight = new SmartX.SmartGroupBox();
+ this.checkBoxMenuEthernet = new SmartX.SmartCheckBox();
this.checkBoxMenuUserGroupEditor = new SmartX.SmartCheckBox();
this.checkBoxMenuInformation = new SmartX.SmartCheckBox();
this.checkBoxMenuAlarmList = new SmartX.SmartCheckBox();
@@ -62,11 +70,8 @@
this.labelExpiryDateOfAccount2 = new SmartX.SmartLabel();
this.smartLabel8 = new SmartX.SmartLabel();
this.smartLabel7 = new SmartX.SmartLabel();
- this.smartLabel6 = new SmartX.SmartLabel();
- this.labelAutomaticLogoutTime = new SmartX.SmartLabel();
this.labelExpiryDateOfPassword = new SmartX.SmartLabel();
this.labelExpiryDateOfAccount = new SmartX.SmartLabel();
- this.labelTitleAutomaticLogoutTime = new SmartX.SmartLabel();
this.labelTitleExpiryDateOfPassword = new SmartX.SmartLabel();
this.labelTitleExpiryDateOfAccount = new SmartX.SmartLabel();
this.labelTitlePassword = new SmartX.SmartLabel();
@@ -83,8 +88,15 @@
this.smartGroupBox1.BackGround = null;
this.smartGroupBox1.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.smartGroupBox1.BackImage = null;
+ this.smartGroupBox1.Controls.Add(this.smartSeparatorLine1);
+ this.smartGroupBox1.Controls.Add(this.labelTitleContents);
+ this.smartGroupBox1.Controls.Add(this.labelNumberOfLoginFailures);
+ this.smartGroupBox1.Controls.Add(this.labelTitleNumberOfLoginFailures);
+ this.smartGroupBox1.Controls.Add(this.smartLabel6);
+ this.smartGroupBox1.Controls.Add(this.labelAutomaticLogoutTime);
+ this.smartGroupBox1.Controls.Add(this.labelTitleAutomaticLogoutTime);
this.smartGroupBox1.Controls.Add(this.smartKeyboard);
- this.smartGroupBox1.Controls.Add(this.buttonPasswordEdit);
+ this.smartGroupBox1.Controls.Add(this.buttonPasswordReset);
this.smartGroupBox1.Controls.Add(this.buttonIDEdit);
this.smartGroupBox1.Controls.Add(this.textBoxPassword);
this.smartGroupBox1.Controls.Add(this.labelPasswordBackGround);
@@ -101,11 +113,8 @@
this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfAccount2);
this.smartGroupBox1.Controls.Add(this.smartLabel8);
this.smartGroupBox1.Controls.Add(this.smartLabel7);
- this.smartGroupBox1.Controls.Add(this.smartLabel6);
- this.smartGroupBox1.Controls.Add(this.labelAutomaticLogoutTime);
this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfPassword);
this.smartGroupBox1.Controls.Add(this.labelExpiryDateOfAccount);
- this.smartGroupBox1.Controls.Add(this.labelTitleAutomaticLogoutTime);
this.smartGroupBox1.Controls.Add(this.labelTitleExpiryDateOfPassword);
this.smartGroupBox1.Controls.Add(this.labelTitleExpiryDateOfAccount);
this.smartGroupBox1.Controls.Add(this.labelTitlePassword);
@@ -126,6 +135,160 @@
this.smartGroupBox1.Text = "smartGroupBox1";
this.smartGroupBox1.TextColor = System.Drawing.Color.White;
//
+ // smartSeparatorLine1
+ //
+ this.smartSeparatorLine1.Line1Color = System.Drawing.Color.DimGray;
+ this.smartSeparatorLine1.Line1Width = 1F;
+ this.smartSeparatorLine1.Line2Color = System.Drawing.Color.LightGray;
+ this.smartSeparatorLine1.Line2Width = 1F;
+ this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal;
+ this.smartSeparatorLine1.Location = new System.Drawing.Point(318, 514);
+ this.smartSeparatorLine1.Name = "smartSeparatorLine1";
+ this.smartSeparatorLine1.Size = new System.Drawing.Size(488, 2);
+ this.smartSeparatorLine1.TabIndex = 218;
+ this.smartSeparatorLine1.Text = "smartSeparatorLine1";
+ //
+ // labelTitleContents
+ //
+ this.labelTitleContents.BackGround = null;
+ this.labelTitleContents.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.labelTitleContents.BorderColor = System.Drawing.Color.White;
+ this.labelTitleContents.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleContents.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold);
+ this.labelTitleContents.ForeColor = System.Drawing.Color.White;
+ this.labelTitleContents.LineSpacing = 0F;
+ this.labelTitleContents.Location = new System.Drawing.Point(317, 529);
+ this.labelTitleContents.Name = "labelTitleContents";
+ this.labelTitleContents.OverlapOptimize = true;
+ this.labelTitleContents.PasswordChar = '\0';
+ this.labelTitleContents.Radius = 3;
+ this.labelTitleContents.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleContents.Size = new System.Drawing.Size(489, 26);
+ this.labelTitleContents.TabIndex = 217;
+ this.labelTitleContents.Text = "<전체 사용자 공통 적용 항목>";
+ this.labelTitleContents.TextColor = System.Drawing.Color.White;
+ this.labelTitleContents.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleContents.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleContents.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleContents.Wordwrap = false;
+ //
+ // labelNumberOfLoginFailures
+ //
+ this.labelNumberOfLoginFailures.BackGround = null;
+ this.labelNumberOfLoginFailures.BackGroundColor = System.Drawing.Color.White;
+ this.labelNumberOfLoginFailures.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelNumberOfLoginFailures.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelNumberOfLoginFailures.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.labelNumberOfLoginFailures.LineSpacing = 0F;
+ this.labelNumberOfLoginFailures.Location = new System.Drawing.Point(479, 601);
+ this.labelNumberOfLoginFailures.Name = "labelNumberOfLoginFailures";
+ this.labelNumberOfLoginFailures.OverlapOptimize = true;
+ this.labelNumberOfLoginFailures.PasswordChar = '\0';
+ this.labelNumberOfLoginFailures.Radius = 3;
+ this.labelNumberOfLoginFailures.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelNumberOfLoginFailures.Size = new System.Drawing.Size(70, 34);
+ this.labelNumberOfLoginFailures.TabIndex = 123;
+ this.labelNumberOfLoginFailures.Text = "00";
+ this.labelNumberOfLoginFailures.TextColor = System.Drawing.Color.Black;
+ this.labelNumberOfLoginFailures.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelNumberOfLoginFailures.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelNumberOfLoginFailures.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelNumberOfLoginFailures.Wordwrap = false;
+ this.labelNumberOfLoginFailures.Click += new System.EventHandler(this.labelNumberOfLoginFailures_Click);
+ //
+ // labelTitleNumberOfLoginFailures
+ //
+ this.labelTitleNumberOfLoginFailures.BackGround = null;
+ this.labelTitleNumberOfLoginFailures.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.labelTitleNumberOfLoginFailures.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitleNumberOfLoginFailures.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleNumberOfLoginFailures.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelTitleNumberOfLoginFailures.LineSpacing = 0F;
+ this.labelTitleNumberOfLoginFailures.Location = new System.Drawing.Point(318, 601);
+ this.labelTitleNumberOfLoginFailures.Name = "labelTitleNumberOfLoginFailures";
+ this.labelTitleNumberOfLoginFailures.OverlapOptimize = true;
+ this.labelTitleNumberOfLoginFailures.PasswordChar = '\0';
+ this.labelTitleNumberOfLoginFailures.Radius = 3;
+ this.labelTitleNumberOfLoginFailures.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleNumberOfLoginFailures.Size = new System.Drawing.Size(155, 34);
+ this.labelTitleNumberOfLoginFailures.TabIndex = 122;
+ this.labelTitleNumberOfLoginFailures.Text = "Number of Failure";
+ this.labelTitleNumberOfLoginFailures.TextColor = System.Drawing.Color.White;
+ this.labelTitleNumberOfLoginFailures.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleNumberOfLoginFailures.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTitleNumberOfLoginFailures.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleNumberOfLoginFailures.Wordwrap = false;
+ //
+ // smartLabel6
+ //
+ this.smartLabel6.BackGround = null;
+ this.smartLabel6.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.smartLabel6.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.smartLabel6.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.smartLabel6.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold);
+ this.smartLabel6.LineSpacing = 0F;
+ this.smartLabel6.Location = new System.Drawing.Point(556, 561);
+ this.smartLabel6.Name = "smartLabel6";
+ this.smartLabel6.OverlapOptimize = true;
+ this.smartLabel6.PasswordChar = '\0';
+ this.smartLabel6.Radius = 3;
+ this.smartLabel6.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.smartLabel6.Size = new System.Drawing.Size(90, 34);
+ this.smartLabel6.TabIndex = 91;
+ this.smartLabel6.Text = "min(Max:90)";
+ this.smartLabel6.TextColor = System.Drawing.Color.White;
+ this.smartLabel6.TextColorDisable = System.Drawing.Color.Gray;
+ this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel6.Wordwrap = false;
+ //
+ // labelAutomaticLogoutTime
+ //
+ this.labelAutomaticLogoutTime.BackGround = null;
+ this.labelAutomaticLogoutTime.BackGroundColor = System.Drawing.Color.White;
+ this.labelAutomaticLogoutTime.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelAutomaticLogoutTime.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelAutomaticLogoutTime.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.labelAutomaticLogoutTime.LineSpacing = 0F;
+ this.labelAutomaticLogoutTime.Location = new System.Drawing.Point(479, 561);
+ this.labelAutomaticLogoutTime.Name = "labelAutomaticLogoutTime";
+ this.labelAutomaticLogoutTime.OverlapOptimize = true;
+ this.labelAutomaticLogoutTime.PasswordChar = '\0';
+ this.labelAutomaticLogoutTime.Radius = 3;
+ this.labelAutomaticLogoutTime.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelAutomaticLogoutTime.Size = new System.Drawing.Size(70, 34);
+ this.labelAutomaticLogoutTime.TabIndex = 90;
+ this.labelAutomaticLogoutTime.Text = "0";
+ this.labelAutomaticLogoutTime.TextColor = System.Drawing.Color.Black;
+ this.labelAutomaticLogoutTime.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelAutomaticLogoutTime.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelAutomaticLogoutTime.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelAutomaticLogoutTime.Wordwrap = false;
+ this.labelAutomaticLogoutTime.Click += new System.EventHandler(this.labelAutomaticLogoutTime_Click);
+ //
+ // labelTitleAutomaticLogoutTime
+ //
+ this.labelTitleAutomaticLogoutTime.BackGround = null;
+ this.labelTitleAutomaticLogoutTime.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.labelTitleAutomaticLogoutTime.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitleAutomaticLogoutTime.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleAutomaticLogoutTime.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelTitleAutomaticLogoutTime.LineSpacing = 0F;
+ this.labelTitleAutomaticLogoutTime.Location = new System.Drawing.Point(318, 561);
+ this.labelTitleAutomaticLogoutTime.Name = "labelTitleAutomaticLogoutTime";
+ this.labelTitleAutomaticLogoutTime.OverlapOptimize = true;
+ this.labelTitleAutomaticLogoutTime.PasswordChar = '\0';
+ this.labelTitleAutomaticLogoutTime.Radius = 3;
+ this.labelTitleAutomaticLogoutTime.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleAutomaticLogoutTime.Size = new System.Drawing.Size(155, 34);
+ this.labelTitleAutomaticLogoutTime.TabIndex = 85;
+ this.labelTitleAutomaticLogoutTime.Text = "Auto logout time";
+ this.labelTitleAutomaticLogoutTime.TextColor = System.Drawing.Color.White;
+ this.labelTitleAutomaticLogoutTime.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleAutomaticLogoutTime.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTitleAutomaticLogoutTime.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleAutomaticLogoutTime.Wordwrap = false;
+ //
// smartKeyboard
//
this.smartKeyboard.BackGround = null;
@@ -170,40 +333,40 @@
this.smartKeyboard.ThemeStyle = SmartX.SmartKeyboard.KEYBOARDTHEMESTYLE.STANDARD4;
this.smartKeyboard.OnXKeyClick += new System.EventHandler(this.smartKeyboard_OnXKeyClick);
//
- // buttonPasswordEdit
+ // buttonPasswordReset
//
- this.buttonPasswordEdit.BackGround = null;
- this.buttonPasswordEdit.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
- this.buttonPasswordEdit.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
- this.buttonPasswordEdit.ButtonDownColor = System.Drawing.Color.SlateGray;
- this.buttonPasswordEdit.ButtonImageAutoSize = true;
- this.buttonPasswordEdit.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
- this.buttonPasswordEdit.ButtonText = "Edit";
- this.buttonPasswordEdit.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
- this.buttonPasswordEdit.GroupID = 0;
- this.buttonPasswordEdit.ImageDisable = null;
- this.buttonPasswordEdit.ImageDown = null;
- this.buttonPasswordEdit.ImageUp = null;
- this.buttonPasswordEdit.Location = new System.Drawing.Point(752, 86);
- this.buttonPasswordEdit.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
- this.buttonPasswordEdit.Name = "buttonPasswordEdit";
- this.buttonPasswordEdit.NestedClickEventPrevent = false;
- this.buttonPasswordEdit.OutlinePixel = 2;
- this.buttonPasswordEdit.OverlapOptimize = true;
- this.buttonPasswordEdit.RepeatInterval = 200;
- this.buttonPasswordEdit.RepeatIntervalAccelerate = null;
- this.buttonPasswordEdit.RoundSize = 10;
- this.buttonPasswordEdit.SafeInterval = 200;
- this.buttonPasswordEdit.Size = new System.Drawing.Size(50, 34);
- this.buttonPasswordEdit.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
- this.buttonPasswordEdit.TabIndex = 121;
- this.buttonPasswordEdit.Text = null;
- this.buttonPasswordEdit.TextColor = System.Drawing.Color.White;
- this.buttonPasswordEdit.TextColorDisable = System.Drawing.Color.Gray;
- this.buttonPasswordEdit.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
- this.buttonPasswordEdit.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
- this.buttonPasswordEdit.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
- this.buttonPasswordEdit.Click += new System.EventHandler(this.buttonPasswordEdit_Click);
+ this.buttonPasswordReset.BackGround = null;
+ this.buttonPasswordReset.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.buttonPasswordReset.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.buttonPasswordReset.ButtonDownColor = System.Drawing.Color.SlateGray;
+ this.buttonPasswordReset.ButtonImageAutoSize = true;
+ this.buttonPasswordReset.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonPasswordReset.ButtonText = "Reset";
+ this.buttonPasswordReset.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonPasswordReset.GroupID = 0;
+ this.buttonPasswordReset.ImageDisable = null;
+ this.buttonPasswordReset.ImageDown = null;
+ this.buttonPasswordReset.ImageUp = null;
+ this.buttonPasswordReset.Location = new System.Drawing.Point(752, 86);
+ this.buttonPasswordReset.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonPasswordReset.Name = "buttonPasswordReset";
+ this.buttonPasswordReset.NestedClickEventPrevent = false;
+ this.buttonPasswordReset.OutlinePixel = 2;
+ this.buttonPasswordReset.OverlapOptimize = true;
+ this.buttonPasswordReset.RepeatInterval = 200;
+ this.buttonPasswordReset.RepeatIntervalAccelerate = null;
+ this.buttonPasswordReset.RoundSize = 10;
+ this.buttonPasswordReset.SafeInterval = 200;
+ this.buttonPasswordReset.Size = new System.Drawing.Size(50, 34);
+ this.buttonPasswordReset.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonPasswordReset.TabIndex = 121;
+ this.buttonPasswordReset.Text = null;
+ this.buttonPasswordReset.TextColor = System.Drawing.Color.White;
+ this.buttonPasswordReset.TextColorDisable = System.Drawing.Color.Gray;
+ this.buttonPasswordReset.TextDownColor = System.Drawing.Color.FromArgb(((int)(((byte)(233)))), ((int)(((byte)(238)))), ((int)(((byte)(255)))));
+ this.buttonPasswordReset.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonPasswordReset.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonPasswordReset.Click += new System.EventHandler(this.buttonPasswordReset_Click);
//
// buttonIDEdit
//
@@ -244,11 +407,12 @@
//
this.textBoxPassword.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBoxPassword.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Regular);
- this.textBoxPassword.Location = new System.Drawing.Point(479, 91);
+ this.textBoxPassword.Location = new System.Drawing.Point(479, 92);
this.textBoxPassword.Name = "textBoxPassword";
this.textBoxPassword.Size = new System.Drawing.Size(267, 28);
this.textBoxPassword.TabIndex = 104;
this.textBoxPassword.Text = "AAAAAAAAAAAAAAA";
+ this.textBoxPassword.GotFocus += new System.EventHandler(this.textBoxPassword_GotFocus);
this.textBoxPassword.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxPassword_KeyPress);
//
// labelPasswordBackGround
@@ -277,11 +441,12 @@
//
this.textBoxID.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBoxID.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Regular);
- this.textBoxID.Location = new System.Drawing.Point(479, 50);
+ this.textBoxID.Location = new System.Drawing.Point(479, 51);
this.textBoxID.Name = "textBoxID";
this.textBoxID.Size = new System.Drawing.Size(267, 28);
this.textBoxID.TabIndex = 103;
this.textBoxID.Text = "AAAAAAAAAAAAAAAAAAAA";
+ this.textBoxID.GotFocus += new System.EventHandler(this.textBoxID_GotFocus);
this.textBoxID.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxID_KeyPress);
//
// labelIDBackGround
@@ -433,7 +598,7 @@
this.buttonLevel3.ImageDisable = null;
this.buttonLevel3.ImageDown = null;
this.buttonLevel3.ImageUp = null;
- this.buttonLevel3.Location = new System.Drawing.Point(695, 367);
+ this.buttonLevel3.Location = new System.Drawing.Point(808, 328);
this.buttonLevel3.Mode = SmartX.SmartButton.BUTTONMODE.RADIO;
this.buttonLevel3.Name = "buttonLevel3";
this.buttonLevel3.NestedClickEventPrevent = false;
@@ -443,7 +608,7 @@
this.buttonLevel3.RepeatIntervalAccelerate = null;
this.buttonLevel3.RoundSize = 10;
this.buttonLevel3.SafeInterval = 200;
- this.buttonLevel3.Size = new System.Drawing.Size(108, 35);
+ this.buttonLevel3.Size = new System.Drawing.Size(89, 35);
this.buttonLevel3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.buttonLevel3.TabIndex = 102;
this.buttonLevel3.Text = null;
@@ -468,7 +633,7 @@
this.buttonLevel2.ImageDisable = null;
this.buttonLevel2.ImageDown = null;
this.buttonLevel2.ImageUp = null;
- this.buttonLevel2.Location = new System.Drawing.Point(695, 326);
+ this.buttonLevel2.Location = new System.Drawing.Point(808, 287);
this.buttonLevel2.Mode = SmartX.SmartButton.BUTTONMODE.RADIO;
this.buttonLevel2.Name = "buttonLevel2";
this.buttonLevel2.NestedClickEventPrevent = false;
@@ -478,7 +643,7 @@
this.buttonLevel2.RepeatIntervalAccelerate = null;
this.buttonLevel2.RoundSize = 10;
this.buttonLevel2.SafeInterval = 200;
- this.buttonLevel2.Size = new System.Drawing.Size(108, 35);
+ this.buttonLevel2.Size = new System.Drawing.Size(89, 35);
this.buttonLevel2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.buttonLevel2.TabIndex = 101;
this.buttonLevel2.Text = null;
@@ -503,7 +668,7 @@
this.buttonLevel1.ImageDisable = null;
this.buttonLevel1.ImageDown = null;
this.buttonLevel1.ImageUp = null;
- this.buttonLevel1.Location = new System.Drawing.Point(695, 285);
+ this.buttonLevel1.Location = new System.Drawing.Point(808, 246);
this.buttonLevel1.Mode = SmartX.SmartButton.BUTTONMODE.RADIO;
this.buttonLevel1.Name = "buttonLevel1";
this.buttonLevel1.NestedClickEventPrevent = false;
@@ -513,7 +678,7 @@
this.buttonLevel1.RepeatIntervalAccelerate = null;
this.buttonLevel1.RoundSize = 10;
this.buttonLevel1.SafeInterval = 200;
- this.buttonLevel1.Size = new System.Drawing.Size(108, 35);
+ this.buttonLevel1.Size = new System.Drawing.Size(89, 35);
this.buttonLevel1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
this.buttonLevel1.TabIndex = 100;
this.buttonLevel1.Text = null;
@@ -532,7 +697,7 @@
this.labelAccessRight.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
this.labelAccessRight.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
this.labelAccessRight.LineSpacing = 0F;
- this.labelAccessRight.Location = new System.Drawing.Point(479, 246);
+ this.labelAccessRight.Location = new System.Drawing.Point(478, 206);
this.labelAccessRight.Name = "labelAccessRight";
this.labelAccessRight.OverlapOptimize = true;
this.labelAccessRight.PasswordChar = '\0';
@@ -554,7 +719,7 @@
this.labelTitleAccessRight.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
this.labelTitleAccessRight.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
this.labelTitleAccessRight.LineSpacing = 0F;
- this.labelTitleAccessRight.Location = new System.Drawing.Point(318, 246);
+ this.labelTitleAccessRight.Location = new System.Drawing.Point(317, 206);
this.labelTitleAccessRight.Name = "labelTitleAccessRight";
this.labelTitleAccessRight.OverlapOptimize = true;
this.labelTitleAccessRight.PasswordChar = '\0';
@@ -574,6 +739,7 @@
this.groupBoxAccessRight.BackGround = null;
this.groupBoxAccessRight.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.groupBoxAccessRight.BackImage = null;
+ this.groupBoxAccessRight.Controls.Add(this.checkBoxMenuEthernet);
this.groupBoxAccessRight.Controls.Add(this.checkBoxMenuUserGroupEditor);
this.groupBoxAccessRight.Controls.Add(this.checkBoxMenuInformation);
this.groupBoxAccessRight.Controls.Add(this.checkBoxMenuAlarmList);
@@ -593,13 +759,37 @@
this.groupBoxAccessRight.FrameLineThickness = 1;
this.groupBoxAccessRight.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle;
this.groupBoxAccessRight.HeaderHeightOffset = 12;
- this.groupBoxAccessRight.Location = new System.Drawing.Point(309, 276);
+ this.groupBoxAccessRight.Location = new System.Drawing.Point(308, 236);
this.groupBoxAccessRight.Name = "groupBoxAccessRight";
this.groupBoxAccessRight.RoundRadius = 5;
- this.groupBoxAccessRight.Size = new System.Drawing.Size(395, 378);
+ this.groupBoxAccessRight.Size = new System.Drawing.Size(508, 276);
this.groupBoxAccessRight.TabIndex = 97;
this.groupBoxAccessRight.TextColor = System.Drawing.Color.White;
//
+ // checkBoxMenuEthernet
+ //
+ this.checkBoxMenuEthernet.BackGround = this.groupBoxAccessRight;
+ this.checkBoxMenuEthernet.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
+ this.checkBoxMenuEthernet.CheckBoxBackColor = System.Drawing.Color.LightGray;
+ this.checkBoxMenuEthernet.CheckBoxCheckColor = System.Drawing.Color.DarkOrchid;
+ this.checkBoxMenuEthernet.CheckBoxOutlineColor = System.Drawing.Color.Black;
+ this.checkBoxMenuEthernet.CheckBoxSymbolSize = 14;
+ this.checkBoxMenuEthernet.Checked = false;
+ this.checkBoxMenuEthernet.CheckLineWidth = 3;
+ this.checkBoxMenuEthernet.Enabled = false;
+ this.checkBoxMenuEthernet.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.checkBoxMenuEthernet.ImageCheckBox = null;
+ this.checkBoxMenuEthernet.ImageUnCheckBox = null;
+ this.checkBoxMenuEthernet.Location = new System.Drawing.Point(339, 112);
+ this.checkBoxMenuEthernet.Name = "checkBoxMenuEthernet";
+ this.checkBoxMenuEthernet.OverlapOptimize = true;
+ this.checkBoxMenuEthernet.Size = new System.Drawing.Size(150, 23);
+ this.checkBoxMenuEthernet.TabIndex = 117;
+ this.checkBoxMenuEthernet.Text = "Ethernet";
+ this.checkBoxMenuEthernet.TextColor = System.Drawing.Color.LightGray;
+ this.checkBoxMenuEthernet.TextColorDisable = System.Drawing.Color.LightGray;
+ this.checkBoxMenuEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle;
+ //
// checkBoxMenuUserGroupEditor
//
this.checkBoxMenuUserGroupEditor.BackGround = this.groupBoxAccessRight;
@@ -614,7 +804,7 @@
this.checkBoxMenuUserGroupEditor.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuUserGroupEditor.ImageCheckBox = null;
this.checkBoxMenuUserGroupEditor.ImageUnCheckBox = null;
- this.checkBoxMenuUserGroupEditor.Location = new System.Drawing.Point(206, 137);
+ this.checkBoxMenuUserGroupEditor.Location = new System.Drawing.Point(177, 112);
this.checkBoxMenuUserGroupEditor.Name = "checkBoxMenuUserGroupEditor";
this.checkBoxMenuUserGroupEditor.OverlapOptimize = true;
this.checkBoxMenuUserGroupEditor.Size = new System.Drawing.Size(150, 23);
@@ -638,7 +828,7 @@
this.checkBoxMenuInformation.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuInformation.ImageCheckBox = null;
this.checkBoxMenuInformation.ImageUnCheckBox = null;
- this.checkBoxMenuInformation.Location = new System.Drawing.Point(206, 282);
+ this.checkBoxMenuInformation.Location = new System.Drawing.Point(339, 54);
this.checkBoxMenuInformation.Name = "checkBoxMenuInformation";
this.checkBoxMenuInformation.OverlapOptimize = true;
this.checkBoxMenuInformation.Size = new System.Drawing.Size(150, 23);
@@ -662,7 +852,7 @@
this.checkBoxMenuAlarmList.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuAlarmList.ImageCheckBox = null;
this.checkBoxMenuAlarmList.ImageUnCheckBox = null;
- this.checkBoxMenuAlarmList.Location = new System.Drawing.Point(206, 253);
+ this.checkBoxMenuAlarmList.Location = new System.Drawing.Point(177, 228);
this.checkBoxMenuAlarmList.Name = "checkBoxMenuAlarmList";
this.checkBoxMenuAlarmList.OverlapOptimize = true;
this.checkBoxMenuAlarmList.Size = new System.Drawing.Size(150, 23);
@@ -686,7 +876,7 @@
this.checkBoxMenuEquipment.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuEquipment.ImageCheckBox = null;
this.checkBoxMenuEquipment.ImageUnCheckBox = null;
- this.checkBoxMenuEquipment.Location = new System.Drawing.Point(206, 311);
+ this.checkBoxMenuEquipment.Location = new System.Drawing.Point(339, 83);
this.checkBoxMenuEquipment.Name = "checkBoxMenuEquipment";
this.checkBoxMenuEquipment.OverlapOptimize = true;
this.checkBoxMenuEquipment.Size = new System.Drawing.Size(150, 23);
@@ -710,7 +900,7 @@
this.checkBoxMenuCheckLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuCheckLog.ImageCheckBox = null;
this.checkBoxMenuCheckLog.ImageUnCheckBox = null;
- this.checkBoxMenuCheckLog.Location = new System.Drawing.Point(206, 224);
+ this.checkBoxMenuCheckLog.Location = new System.Drawing.Point(177, 199);
this.checkBoxMenuCheckLog.Name = "checkBoxMenuCheckLog";
this.checkBoxMenuCheckLog.OverlapOptimize = true;
this.checkBoxMenuCheckLog.Size = new System.Drawing.Size(150, 23);
@@ -734,7 +924,7 @@
this.checkBoxMenuHistoryLog.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuHistoryLog.ImageCheckBox = null;
this.checkBoxMenuHistoryLog.ImageUnCheckBox = null;
- this.checkBoxMenuHistoryLog.Location = new System.Drawing.Point(206, 195);
+ this.checkBoxMenuHistoryLog.Location = new System.Drawing.Point(177, 170);
this.checkBoxMenuHistoryLog.Name = "checkBoxMenuHistoryLog";
this.checkBoxMenuHistoryLog.OverlapOptimize = true;
this.checkBoxMenuHistoryLog.Size = new System.Drawing.Size(150, 23);
@@ -758,7 +948,7 @@
this.checkBoxMenuIOTest.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuIOTest.ImageCheckBox = null;
this.checkBoxMenuIOTest.ImageUnCheckBox = null;
- this.checkBoxMenuIOTest.Location = new System.Drawing.Point(206, 166);
+ this.checkBoxMenuIOTest.Location = new System.Drawing.Point(177, 141);
this.checkBoxMenuIOTest.Name = "checkBoxMenuIOTest";
this.checkBoxMenuIOTest.OverlapOptimize = true;
this.checkBoxMenuIOTest.Size = new System.Drawing.Size(150, 23);
@@ -776,13 +966,13 @@
this.labelTitleMenu.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
this.labelTitleMenu.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.labelTitleMenu.LineSpacing = 0F;
- this.labelTitleMenu.Location = new System.Drawing.Point(206, 50);
+ this.labelTitleMenu.Location = new System.Drawing.Point(175, 25);
this.labelTitleMenu.Name = "labelTitleMenu";
this.labelTitleMenu.OverlapOptimize = true;
this.labelTitleMenu.PasswordChar = '\0';
this.labelTitleMenu.Radius = 3;
this.labelTitleMenu.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.labelTitleMenu.Size = new System.Drawing.Size(150, 23);
+ this.labelTitleMenu.Size = new System.Drawing.Size(314, 23);
this.labelTitleMenu.TabIndex = 107;
this.labelTitleMenu.Text = "Menu";
this.labelTitleMenu.TextColor = System.Drawing.Color.White;
@@ -799,7 +989,7 @@
this.labelTitleMain.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
this.labelTitleMain.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold);
this.labelTitleMain.LineSpacing = 0F;
- this.labelTitleMain.Location = new System.Drawing.Point(30, 50);
+ this.labelTitleMain.Location = new System.Drawing.Point(19, 25);
this.labelTitleMain.Name = "labelTitleMain";
this.labelTitleMain.OverlapOptimize = true;
this.labelTitleMain.PasswordChar = '\0';
@@ -828,7 +1018,7 @@
this.checkBoxMenuUserEditor.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuUserEditor.ImageCheckBox = null;
this.checkBoxMenuUserEditor.ImageUnCheckBox = null;
- this.checkBoxMenuUserEditor.Location = new System.Drawing.Point(206, 108);
+ this.checkBoxMenuUserEditor.Location = new System.Drawing.Point(177, 83);
this.checkBoxMenuUserEditor.Name = "checkBoxMenuUserEditor";
this.checkBoxMenuUserEditor.OverlapOptimize = true;
this.checkBoxMenuUserEditor.Size = new System.Drawing.Size(150, 23);
@@ -852,7 +1042,7 @@
this.checkBoxMenuRecipe.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMenuRecipe.ImageCheckBox = null;
this.checkBoxMenuRecipe.ImageUnCheckBox = null;
- this.checkBoxMenuRecipe.Location = new System.Drawing.Point(206, 79);
+ this.checkBoxMenuRecipe.Location = new System.Drawing.Point(177, 54);
this.checkBoxMenuRecipe.Name = "checkBoxMenuRecipe";
this.checkBoxMenuRecipe.OverlapOptimize = true;
this.checkBoxMenuRecipe.Size = new System.Drawing.Size(150, 23);
@@ -876,7 +1066,7 @@
this.checkBoxMainSubMenu.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMainSubMenu.ImageCheckBox = null;
this.checkBoxMainSubMenu.ImageUnCheckBox = null;
- this.checkBoxMainSubMenu.Location = new System.Drawing.Point(30, 137);
+ this.checkBoxMainSubMenu.Location = new System.Drawing.Point(19, 112);
this.checkBoxMainSubMenu.Name = "checkBoxMainSubMenu";
this.checkBoxMainSubMenu.OverlapOptimize = true;
this.checkBoxMainSubMenu.Size = new System.Drawing.Size(150, 23);
@@ -901,7 +1091,7 @@
this.checkBoxMainClear.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMainClear.ImageCheckBox = null;
this.checkBoxMainClear.ImageUnCheckBox = null;
- this.checkBoxMainClear.Location = new System.Drawing.Point(30, 108);
+ this.checkBoxMainClear.Location = new System.Drawing.Point(19, 83);
this.checkBoxMainClear.Name = "checkBoxMainClear";
this.checkBoxMainClear.OverlapOptimize = true;
this.checkBoxMainClear.Size = new System.Drawing.Size(150, 23);
@@ -925,7 +1115,7 @@
this.checkBoxMainProductChange.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
this.checkBoxMainProductChange.ImageCheckBox = null;
this.checkBoxMainProductChange.ImageUnCheckBox = null;
- this.checkBoxMainProductChange.Location = new System.Drawing.Point(30, 79);
+ this.checkBoxMainProductChange.Location = new System.Drawing.Point(19, 54);
this.checkBoxMainProductChange.Name = "checkBoxMainProductChange";
this.checkBoxMainProductChange.OverlapOptimize = true;
this.checkBoxMainProductChange.Size = new System.Drawing.Size(150, 23);
@@ -957,6 +1147,7 @@
this.labelExpiryDateOfPassword2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelExpiryDateOfPassword2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelExpiryDateOfPassword2.Wordwrap = false;
+ this.labelExpiryDateOfPassword2.Click += new System.EventHandler(this.labelExpiryDateOfPassword2_Click);
//
// labelExpiryDateOfAccount2
//
@@ -980,6 +1171,7 @@
this.labelExpiryDateOfAccount2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelExpiryDateOfAccount2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.labelExpiryDateOfAccount2.Wordwrap = false;
+ this.labelExpiryDateOfAccount2.Click += new System.EventHandler(this.labelExpiryDateOfAccount2_Click);
//
// smartLabel8
//
@@ -1027,54 +1219,6 @@
this.smartLabel7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
this.smartLabel7.Wordwrap = false;
//
- // smartLabel6
- //
- this.smartLabel6.BackGround = null;
- this.smartLabel6.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(52)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
- this.smartLabel6.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.smartLabel6.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.smartLabel6.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold);
- this.smartLabel6.LineSpacing = 0F;
- this.smartLabel6.Location = new System.Drawing.Point(556, 206);
- this.smartLabel6.Name = "smartLabel6";
- this.smartLabel6.OverlapOptimize = true;
- this.smartLabel6.PasswordChar = '\0';
- this.smartLabel6.Radius = 3;
- this.smartLabel6.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.smartLabel6.Size = new System.Drawing.Size(90, 34);
- this.smartLabel6.TabIndex = 91;
- this.smartLabel6.Text = "min(Max:90)";
- this.smartLabel6.TextColor = System.Drawing.Color.White;
- this.smartLabel6.TextColorDisable = System.Drawing.Color.Gray;
- this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
- this.smartLabel6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.smartLabel6.Wordwrap = false;
- //
- // labelAutomaticLogoutTime
- //
- this.labelAutomaticLogoutTime.BackGround = null;
- this.labelAutomaticLogoutTime.BackGroundColor = System.Drawing.Color.Silver;
- this.labelAutomaticLogoutTime.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.labelAutomaticLogoutTime.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.labelAutomaticLogoutTime.Enabled = false;
- this.labelAutomaticLogoutTime.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
- this.labelAutomaticLogoutTime.LineSpacing = 0F;
- this.labelAutomaticLogoutTime.Location = new System.Drawing.Point(479, 206);
- this.labelAutomaticLogoutTime.Name = "labelAutomaticLogoutTime";
- this.labelAutomaticLogoutTime.OverlapOptimize = true;
- this.labelAutomaticLogoutTime.PasswordChar = '\0';
- this.labelAutomaticLogoutTime.Radius = 3;
- this.labelAutomaticLogoutTime.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.labelAutomaticLogoutTime.Size = new System.Drawing.Size(70, 34);
- this.labelAutomaticLogoutTime.TabIndex = 90;
- this.labelAutomaticLogoutTime.Text = "0";
- this.labelAutomaticLogoutTime.TextColor = System.Drawing.Color.Black;
- this.labelAutomaticLogoutTime.TextColorDisable = System.Drawing.Color.Gray;
- this.labelAutomaticLogoutTime.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
- this.labelAutomaticLogoutTime.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.labelAutomaticLogoutTime.Wordwrap = false;
- this.labelAutomaticLogoutTime.Click += new System.EventHandler(this.labelAutomaticLogoutTime_Click);
- //
// labelExpiryDateOfPassword
//
this.labelExpiryDateOfPassword.BackGround = null;
@@ -1123,29 +1267,6 @@
this.labelExpiryDateOfAccount.Wordwrap = false;
this.labelExpiryDateOfAccount.Click += new System.EventHandler(this.labelExpiryDateOfAccount_Click);
//
- // labelTitleAutomaticLogoutTime
- //
- this.labelTitleAutomaticLogoutTime.BackGround = null;
- this.labelTitleAutomaticLogoutTime.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
- this.labelTitleAutomaticLogoutTime.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.labelTitleAutomaticLogoutTime.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.labelTitleAutomaticLogoutTime.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
- this.labelTitleAutomaticLogoutTime.LineSpacing = 0F;
- this.labelTitleAutomaticLogoutTime.Location = new System.Drawing.Point(318, 206);
- this.labelTitleAutomaticLogoutTime.Name = "labelTitleAutomaticLogoutTime";
- this.labelTitleAutomaticLogoutTime.OverlapOptimize = true;
- this.labelTitleAutomaticLogoutTime.PasswordChar = '\0';
- this.labelTitleAutomaticLogoutTime.Radius = 3;
- this.labelTitleAutomaticLogoutTime.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.labelTitleAutomaticLogoutTime.Size = new System.Drawing.Size(155, 34);
- this.labelTitleAutomaticLogoutTime.TabIndex = 85;
- this.labelTitleAutomaticLogoutTime.Text = "Auto logout time";
- this.labelTitleAutomaticLogoutTime.TextColor = System.Drawing.Color.White;
- this.labelTitleAutomaticLogoutTime.TextColorDisable = System.Drawing.Color.Gray;
- this.labelTitleAutomaticLogoutTime.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
- this.labelTitleAutomaticLogoutTime.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.labelTitleAutomaticLogoutTime.Wordwrap = false;
- //
// labelTitleExpiryDateOfPassword
//
this.labelTitleExpiryDateOfPassword.BackGround = null;
@@ -1400,10 +1521,15 @@
private System.Windows.Forms.TextBox textBoxID;
private System.Windows.Forms.TextBox textBoxPassword;
private SmartX.SmartKeyboard smartKeyboard;
- private SmartX.SmartButton buttonPasswordEdit;
+ private SmartX.SmartButton buttonPasswordReset;
private SmartX.SmartButton buttonIDEdit;
private SmartX.SmartCheckBox checkBoxMenuEquipment;
private SmartX.SmartLabel labelPasswordBackGround;
private SmartX.SmartLabel labelIDBackGround;
+ private SmartX.SmartLabel labelNumberOfLoginFailures;
+ private SmartX.SmartLabel labelTitleNumberOfLoginFailures;
+ private SmartX.SmartCheckBox checkBoxMenuEthernet;
+ private SmartX.SmartSeparatorLine smartSeparatorLine1;
+ public SmartX.SmartLabel labelTitleContents;
}
}
diff --git a/INT_PT002/Controls/User/ControlMenuUserUserEditor.cs b/INT_PT002/Controls/User/ControlMenuUserUserEditor.cs
index 627a4bf..0193cd3 100644
--- a/INT_PT002/Controls/User/ControlMenuUserUserEditor.cs
+++ b/INT_PT002/Controls/User/ControlMenuUserUserEditor.cs
@@ -21,6 +21,12 @@ namespace INT_PT002.Controls
private FormMenu m_ParentForm;
private UserItem SelectedUserItem;
+
+ private bool IsNew;
+ private bool PasswordChar;
+
+ private string BeforeID;
+ private string BeforePassword;
#endregion
#region Constructor
@@ -30,6 +36,7 @@ namespace INT_PT002.Controls
this.ParentForm = parent;
this.Initialize();
+ this.DefaultSetting();
}
#endregion
@@ -46,6 +53,47 @@ namespace INT_PT002.Controls
{
this.smartGroupBox1.Text = "User > UserEditor";
}
+ private void DefaultSetting()
+ {
+ this.IsNew = false;
+ this.PasswordChar = false;
+ this.BeforeID = "";
+ this.BeforePassword = "";
+
+ this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL;
+ this.smartKeyboard.Show();
+ }
+ private bool UI_Invoke(ThreadStart invoker)
+ {
+ try
+ {
+ if (this.InvokeRequired)
+ {
+ if (this.IsDisposed)
+ return true;
+
+ this.Invoke(invoker);
+ }
+ else
+ {
+ invoker();
+ }
+
+ return true;
+
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+ }
+
+ private void KeyboardClose()
+ {
+ this.smartKeyboard.Hide();
+
+ this.SetEnableControl(true);
+ }
private void SetEnableID(bool value)
{
@@ -66,7 +114,7 @@ namespace INT_PT002.Controls
private void SetEnablePassword(bool value)
{
this.textBoxPassword.Enabled = value;
- this.buttonPasswordEdit.Enabled = value;
+ this.buttonPasswordReset.Enabled = value;
if (value == true)
{
@@ -79,25 +127,49 @@ namespace INT_PT002.Controls
this.labelPasswordBackGround.BackGroundColor = Color.Silver;
}
}
- private void KeyboardClose()
+ private void SetEnableLevelButton(bool value)
{
- this.smartKeyboard.Hide();
-
- this.buttonRegister.Enabled = true;
- this.buttonDelete.Enabled = true;
- this.groupBoxAccessRight.Enabled = true;
- this.listBoxUserList.Enabled = true;
- this.SetEnableID(true);
- this.SetEnablePassword(true);
-
- if(this.buttonSave.Visible == false)
- this.buttonSave.Visible = true;
+ this.buttonLevel1.Enabled = value;
+ this.buttonLevel2.Enabled = value;
+ this.buttonLevel3.Enabled = value;
}
- private void ChangeUserControlEnable(bool enable)
+ private void SetEnableExpireDate(bool value)
{
- this.listBoxUserList.Enabled = enable;
- this.smartGroupBox1.Enabled = enable;
+ this.labelExpiryDateOfAccount.Enabled = value;
+ this.labelExpiryDateOfPassword.Enabled = value;
+
+ if (value == true)
+ {
+ this.labelExpiryDateOfAccount.BackColor = Color.White;
+ this.labelExpiryDateOfPassword.BackColor = Color.White;
+ }
+ else
+ {
+ this.labelExpiryDateOfAccount.BackColor = Color.Silver;
+ this.labelExpiryDateOfPassword.BackColor = Color.Silver;
+ }
}
+ private void SetEnableControl(bool value)
+ {
+ this.listBoxUserList.Enabled = value;
+
+ this.buttonRegister.Enabled = value;
+ this.buttonDelete.Enabled = value;
+ this.buttonSave.Enabled = value;
+ }
+ private void SetTextBoxPasswordChar(bool bValue)
+ {
+ if (bValue == false)
+ {
+ if (this.textBoxPassword.Text == this.SelectedUserItem.ResetPW)
+ this.textBoxPassword.PasswordChar = default(char);
+ else
+ this.textBoxPassword.PasswordChar = '*';
+ }
+ else
+ this.textBoxPassword.PasswordChar = default(char);
+ }
+
private void UserNew()
{
this.listBoxUserList.SelectedIndexChanged -= new EventHandler(this.listBoxUserList_SelectedIndexChanged);
@@ -111,8 +183,6 @@ namespace INT_PT002.Controls
this.labelExpiryDateOfAccount.Enabled = true;
this.labelExpiryDateOfPassword.Enabled = true;
- this.SetEnableID(true);
- this.SetEnablePassword(true);
}
private void SaveUserDll()
{
@@ -221,13 +291,10 @@ namespace INT_PT002.Controls
#endregion
item.ID = this.textBoxID.Text;
- item.SetPassword(this.textBoxPassword.Text);
- item.ExpireAccount = int.Parse(this.labelExpiryDateOfAccount.Text);
+ item.Password = this.textBoxPassword.Text;
+ item.ExpireId = int.Parse(this.labelExpiryDateOfAccount.Text);
item.ExpirePassword = int.Parse(this.labelExpiryDateOfPassword.Text);
- //item.IsAdmin = this.cbAdministrator.Checked;
-
-
if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN)
item.ActiveLevel = 1;
if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN)
@@ -242,7 +309,7 @@ namespace INT_PT002.Controls
if (isNewReg == true)
{
#region 신규 등록
- UserManager.UserManager_UserNew(item.ID, item.Password, item.IsAdmin == false ? 0 : 1, item.ExpirePassword, item.ExpireAccount, item.ActiveLevel, menuId);
+ UserManager.UserManager_UserNew(item.ID, item.Password, item.IsAdmin == false ? 0 : 1, item.ExpirePassword, item.ExpireId, item.ActiveLevel, menuId);
// Part 11
detail = string.Format("Add : {0}", item.ID);
@@ -252,7 +319,7 @@ namespace INT_PT002.Controls
else
{
#region 유저 수정
- UserManager.UserManager_UserModify(item.ID, item.Password, item.IsAdmin == false ? 0 : 1, item.ExpirePassword, item.ExpireAccount, item.ActiveLevel, menuId);
+ UserManager.UserManager_UserModify(item.ID, item.Password, item.IsAdmin == false ? 0 : 1, item.ExpirePassword, item.ExpireId, item.ActiveLevel, menuId);
// Part 11
detail = string.Format("Modify : {0}", item.ID);
@@ -260,33 +327,18 @@ namespace INT_PT002.Controls
#endregion
}
- #region 자동 로그아웃 타임
- //this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT = int.Parse(this.labelAutomaticLogoutTime.Text);
-
- //if (this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT == 1)
- // this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 30;
- //else
- // this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 60;
-
- //UserManager.UserManager_AutoLogoutSetTimeout(this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT, this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime);
- #endregion
-
- this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
-
this.buttonSave.Visible = false;
}
}
- private void CheckBoxCheckedAsLevel(Define.E_UserStatus level)
+ private void CheckBoxCheckedAsLevel(Define.E_UserGroup level)
{
switch (level)
{
- case Define.E_UserStatus.Level1:
+ case Define.E_UserGroup.Level1:
this.buttonLevel2.ButtonUp();
this.buttonLevel3.ButtonUp();
this.buttonLevel1.ButtonDown();
- this.buttonLevel1.Enabled = true;
- this.buttonLevel2.Enabled = true;
- this.buttonLevel3.Enabled = true;
+ this.SetEnableLevelButton(true);
this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig.LEVEL1_NAME;
@@ -302,15 +354,14 @@ namespace INT_PT002.Controls
this.checkBoxMenuCheckLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuInspectionLog;
this.checkBoxMenuAlarmList.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuAlarmLog;
this.checkBoxMenuInformation.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuInformation;
- this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuStatus;
+ this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuEquipment;
+ this.checkBoxMenuEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuEthernet;
break;
- case Define.E_UserStatus.Level2:
+ case Define.E_UserGroup.Level2:
this.buttonLevel1.ButtonUp();
this.buttonLevel3.ButtonUp();
this.buttonLevel2.ButtonDown();
- this.buttonLevel1.Enabled = true;
- this.buttonLevel2.Enabled = true;
- this.buttonLevel3.Enabled = true;
+ this.SetEnableLevelButton(true);
this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig.LEVEL2_NAME;
@@ -326,15 +377,14 @@ namespace INT_PT002.Controls
this.checkBoxMenuCheckLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuInspectionLog;
this.checkBoxMenuAlarmList.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuAlarmLog;
this.checkBoxMenuInformation.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuInformation;
- this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuStatus;
+ this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuEquipment;
+ this.checkBoxMenuEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuEthernet;
break;
- case Define.E_UserStatus.Level3:
+ case Define.E_UserGroup.Level3:
this.buttonLevel1.ButtonUp();
this.buttonLevel2.ButtonUp();
this.buttonLevel3.ButtonDown();
- this.buttonLevel1.Enabled = true;
- this.buttonLevel2.Enabled = true;
- this.buttonLevel3.Enabled = true;
+ this.SetEnableLevelButton(true);
this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig.LEVEL3_NAME;
@@ -350,39 +400,52 @@ namespace INT_PT002.Controls
this.checkBoxMenuCheckLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuInspectionLog;
this.checkBoxMenuAlarmList.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuAlarmLog;
this.checkBoxMenuInformation.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuInformation;
- this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuStatus;
+ this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuEquipment;
+ this.checkBoxMenuEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuEthernet;
break;
- case Define.E_UserStatus.Admin:
+ case Define.E_UserGroup.Admin:
this.buttonLevel1.ButtonUp();
this.buttonLevel2.ButtonUp();
this.buttonLevel3.ButtonUp();
- this.buttonLevel1.Enabled = false;
- this.buttonLevel2.Enabled = false;
- this.buttonLevel3.Enabled = false;
+ this.SetEnableLevelButton(false);
this.labelAccessRight.Text = "Admin";
- this.checkBoxMainProductChange.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayProductChange;
- this.checkBoxMainClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayClear;
- this.checkBoxMainSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplaySubMenu;
+ //this.checkBoxMainProductChange.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayProductChange;
+ //this.checkBoxMainClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplayClear;
+ //this.checkBoxMainSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMainDisplaySubMenu;
- this.checkBoxMenuRecipe.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuRecipe;
- this.checkBoxMenuUserEditor.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserSetting;
- this.checkBoxMenuUserGroupEditor.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserGroupEditor;
- this.checkBoxMenuIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuIOTest;
- this.checkBoxMenuHistoryLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuHistoryLog;
- this.checkBoxMenuCheckLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInspectionLog;
- this.checkBoxMenuAlarmList.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuAlarmLog;
- this.checkBoxMenuInformation.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInformation;
- this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuStatus;
+ //this.checkBoxMenuRecipe.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuRecipe;
+ //this.checkBoxMenuUserEditor.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserSetting;
+ //this.checkBoxMenuUserGroupEditor.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuUserGroupEditor;
+ //this.checkBoxMenuIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuIOTest;
+ //this.checkBoxMenuHistoryLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuHistoryLog;
+ //this.checkBoxMenuCheckLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInspectionLog;
+ //this.checkBoxMenuAlarmList.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuAlarmLog;
+ //this.checkBoxMenuInformation.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuInformation;
+ //this.checkBoxMenuEquipment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuEquipment;
+ //this.checkBoxMenuEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Admin.IsMenuEthernet;
+
+ this.checkBoxMainProductChange.Checked = true;
+ this.checkBoxMainClear.Checked = true;
+ this.checkBoxMainSubMenu.Checked = true;
+
+ this.checkBoxMenuRecipe.Checked = true;
+ this.checkBoxMenuUserEditor.Checked = true;
+ this.checkBoxMenuUserGroupEditor.Checked = true;
+ this.checkBoxMenuIOTest.Checked = true;
+ this.checkBoxMenuHistoryLog.Checked = true;
+ this.checkBoxMenuCheckLog.Checked = true;
+ this.checkBoxMenuAlarmList.Checked = true;
+ this.checkBoxMenuInformation.Checked = true;
+ this.checkBoxMenuEquipment.Checked = true;
+ this.checkBoxMenuEthernet.Checked = true;
break;
default:
this.buttonLevel1.ButtonUp();
this.buttonLevel2.ButtonUp();
this.buttonLevel3.ButtonUp();
- this.buttonLevel1.Enabled = true;
- this.buttonLevel2.Enabled = true;
- this.buttonLevel3.Enabled = true;
+ this.SetEnableLevelButton(true);
this.labelAccessRight.Text = "";
@@ -399,6 +462,7 @@ namespace INT_PT002.Controls
this.checkBoxMenuAlarmList.Checked = false;
this.checkBoxMenuInformation.Checked = false;
this.checkBoxMenuEquipment.Checked = false;
+ this.checkBoxMenuEthernet.Checked = false;
break;
}
}
@@ -408,12 +472,15 @@ namespace INT_PT002.Controls
this.SelectedUserItem = new UserItem();
this.textBoxID.Text = "";
- this.textBoxPassword.Text = "";
+ this.textBoxPassword.Text = this.SelectedUserItem.ResetPW;
+ this.SetTextBoxPasswordChar(true);
this.labelExpiryDateOfAccount.Text = "180";
this.labelExpiryDateOfPassword.Text = "90";
- this.labelExpiryDateOfAccount2.Text = "yyyy.mm.DD";
- this.labelExpiryDateOfPassword2.Text = "yyyy.mm.DD";
- this.labelAutomaticLogoutTime.Text = "0";
+ this.labelExpiryDateOfAccount2.Text = "-";
+ this.labelExpiryDateOfPassword2.Text = "-";
+ this.labelExpiryDateOfAccount2.TextColor = Color.White;
+ this.labelExpiryDateOfPassword2.TextColor = Color.White;
+
this.labelAccessRight.Text = "";
this.buttonLevel1.ButtonText = system.LEVEL1_NAME;
@@ -433,12 +500,25 @@ namespace INT_PT002.Controls
this.checkBoxMenuAlarmList.Checked = false;
this.checkBoxMenuInformation.Checked = false;
this.checkBoxMenuEquipment.Checked = false;
+ this.checkBoxMenuEthernet.Checked = false;
this.buttonLevel1.ButtonUp();
this.buttonLevel2.ButtonUp();
this.buttonLevel3.ButtonUp();
- this.buttonDelete.Enabled = false;
+ this.KeyboardClose();
+ this.SetEnableID(true);
+ this.SetEnablePassword(false);
+ this.SetEnableLevelButton(true);
+
+ this.buttonDelete.Visible = false;
+ this.buttonSave.Visible = false;
+ if (this.buttonPasswordReset.ButtonText != "Reset")
+ this.buttonPasswordReset.ButtonText = "Reset";
+
+ this.listBoxUserList.SelectedIndexChanged -= new EventHandler(this.listBoxUserList_SelectedIndexChanged);
+ this.listBoxUserList.SelectItemIndex = -1;
+ this.listBoxUserList.SelectedIndexChanged += new EventHandler(this.listBoxUserList_SelectedIndexChanged);
}
public void UpdateLevelNameDisplay(SystemConfiguration system)
{
@@ -448,40 +528,63 @@ namespace INT_PT002.Controls
}
private void UpdateCurrentUserItem(UserManager.UserMgr_user_list_t item)
{
- // CurrentUserItem SET
- this.SelectedUserItem.ID = item.user_id;
- this.SelectedUserItem.Password = item.user_pw;
+ try
+ {
+ // CurrentUserItem SET
+ this.SelectedUserItem.ID = item.user_id;
+ this.SelectedUserItem.Password = item.user_pw;
- this.SelectedUserItem.ExpireAccount = item.expire_period_account;
- this.SelectedUserItem.ExpirePassword = item.expire_period_pw;
+ this.SelectedUserItem.ExpireId = item.id_expire_period;
+ this.SelectedUserItem.ExpirePassword = item.password_expire_period;
- DateTime time = DateTime.ParseExact(item.register_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateRegister = time;
- time = DateTime.ParseExact(item.login_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateLogin = time;
- time = DateTime.ParseExact(item.expire_account_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateExpireLogin = time;
- time = DateTime.ParseExact(item.expire_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateExpireRegister = time;
+ //if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true)
+ this.SelectedUserItem.IsAdmin = item.fadmin == 0 ? false : true;
+ //else
+ // this.SelectedUserItem.IsAdmin = true;
- this.SelectedUserItem.IsLockAccount = item.flock_status_account == 0 ? false : true;
- this.SelectedUserItem.IsLockPassword = item.flock_status_password == 0 ? false : true;
+ this.SelectedUserItem.ActiveLevel = item.active_level;
+ if (this.SelectedUserItem.ActiveLevel == 1)
+ this.SelectedUserItem.Group = Define.E_UserGroup.Level1;
+ else if (this.SelectedUserItem.ActiveLevel == 2)
+ this.SelectedUserItem.Group = Define.E_UserGroup.Level2;
+ else if (this.SelectedUserItem.ActiveLevel == 3)
+ this.SelectedUserItem.Group = Define.E_UserGroup.Level3;
+ else if (this.SelectedUserItem.ActiveLevel == 9)
+ this.SelectedUserItem.Group = Define.E_UserGroup.Admin;
+ else if (this.SelectedUserItem.ActiveLevel == 10)
+ this.SelectedUserItem.Group = Define.E_UserGroup.Developer;
+ else
+ this.SelectedUserItem.Group = Define.E_UserGroup.None;
- this.SelectedUserItem.IsAdmin = item.fadmin == 0 ? false : true;
- this.SelectedUserItem.ActiveLevel = item.active_level;
+ if (this.SelectedUserItem.Group == Define.E_UserGroup.Admin
+ || this.SelectedUserItem.Group == Define.E_UserGroup.Developer)
+ {
+ this.SelectedUserItem.DatePasswordRegister = DateTime.Now;
+ this.SelectedUserItem.DateIdLogin = DateTime.Now;
+ this.SelectedUserItem.DatePasswordExpire = DateTime.Now;
+ this.SelectedUserItem.DateIdExpire = DateTime.Now;
+ }
+ else
+ {
+ DateTime time = DateTime.ParseExact(item.password_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DatePasswordRegister = time;
+ time = DateTime.ParseExact(item.id_login_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DateIdLogin = time;
+ time = DateTime.ParseExact(item.id_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DateIdExpire = time;
+ time = DateTime.ParseExact(item.password_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DatePasswordExpire = time;
+ }
- if (this.SelectedUserItem.ActiveLevel == 1)
- this.SelectedUserItem.Status = Define.E_UserStatus.Level1;
- else if (this.SelectedUserItem.ActiveLevel == 2)
- this.SelectedUserItem.Status = Define.E_UserStatus.Level2;
- else if (this.SelectedUserItem.ActiveLevel == 3)
- this.SelectedUserItem.Status = Define.E_UserStatus.Level3;
- else if (this.SelectedUserItem.ActiveLevel == 9)
- this.SelectedUserItem.Status = Define.E_UserStatus.Admin;
- else if (this.SelectedUserItem.ActiveLevel == 10)
- this.SelectedUserItem.Status = Define.E_UserStatus.Developer;
- else
- this.SelectedUserItem.Status = Define.E_UserStatus.None;
+ this.SelectedUserItem.IsLockAccount = item.id_flock_status == 0 ? false : true;
+ this.SelectedUserItem.IsLockPassword = item.flock_status_password == 0 ? false : true;
+
+ this.SelectedUserItem.IsFirstPassword = item.fFirstPW;
+ }
+ catch (Exception ex)
+ {
+ FormMain.Exception(ex);
+ }
}
private void UpdateCurrentUserItem(UserManager.UserMgr_user_info_t item)
{
@@ -489,49 +592,146 @@ namespace INT_PT002.Controls
this.SelectedUserItem.ID = item.user_id;
this.SelectedUserItem.Password = item.user_pw;
- this.SelectedUserItem.ExpireAccount = item.expire_period_account;
- this.SelectedUserItem.ExpirePassword = item.expire_period_pw;
+ this.SelectedUserItem.ExpireId = item.id_expire_period;
+ this.SelectedUserItem.ExpirePassword = item.password_expire_period;
- DateTime time = DateTime.ParseExact(item.register_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateRegister = time;
- time = DateTime.ParseExact(item.login_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateLogin = time;
- time = DateTime.ParseExact(item.expire_account_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateExpireLogin = time;
- time = DateTime.ParseExact(item.expire_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.SelectedUserItem.DateExpireRegister = time;
+ if (this.SelectedUserItem.Group == Define.E_UserGroup.Admin
+ || this.SelectedUserItem.Group == Define.E_UserGroup.Developer)
+ {
+ this.SelectedUserItem.DatePasswordRegister = DateTime.Now;
+ this.SelectedUserItem.DateIdLogin = DateTime.Now;
+ this.SelectedUserItem.DatePasswordExpire = DateTime.Now;
+ this.SelectedUserItem.DateIdExpire = DateTime.Now;
+ }
+ else
+ {
+ DateTime time = DateTime.ParseExact(item.password_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DatePasswordRegister = time;
+ time = DateTime.ParseExact(item.id_login_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DateIdLogin = time;
+ time = DateTime.ParseExact(item.id_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DateIdExpire = time;
+ time = DateTime.ParseExact(item.password_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.SelectedUserItem.DatePasswordExpire = time;
+ }
- this.SelectedUserItem.IsLockAccount = item.flock_status_account == 0 ? false : true;
- this.SelectedUserItem.IsLockPassword = item.flock_status_password == 0 ? false : true;
+ this.SelectedUserItem.IsLockAccount = item.id_flock_status == 0 ? false : true;
+ this.SelectedUserItem.IsLockPassword = item.password_flock_status == 0 ? false : true;
+ //if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true)
this.SelectedUserItem.IsAdmin = item.fadmin == 0 ? false : true;
+ //else
+ // this.SelectedUserItem.IsAdmin = true;
+
this.SelectedUserItem.ActiveLevel = item.active_level;
-
if (item.active_level == 1)
- this.SelectedUserItem.Status = Define.E_UserStatus.Level1;
- else if(item.active_level == 2)
- this.SelectedUserItem.Status = Define.E_UserStatus.Level2;
+ this.SelectedUserItem.Group = Define.E_UserGroup.Level1;
+ else if (item.active_level == 2)
+ this.SelectedUserItem.Group = Define.E_UserGroup.Level2;
else if (item.active_level == 3)
- this.SelectedUserItem.Status = Define.E_UserStatus.Level3;
+ this.SelectedUserItem.Group = Define.E_UserGroup.Level3;
else if (item.active_level == 9)
- this.SelectedUserItem.Status = Define.E_UserStatus.Admin;
+ this.SelectedUserItem.Group = Define.E_UserGroup.Admin;
else if (item.active_level == 10)
- this.SelectedUserItem.Status = Define.E_UserStatus.Developer;
+ this.SelectedUserItem.Group = Define.E_UserGroup.Developer;
+
+ this.SelectedUserItem.IsFirstPassword = item.fFirstPW;
}
private void UpdateSelectUserDisplay(UserItem item)
{
- // 화면 Enable 처리 추가할것
- this.ChangeUserControlEnable(true);
this.SetEnableID(false);
+ this.SetEnableControl(true);
this.textBoxID.Text = item.ID;
this.textBoxPassword.Text = item.Password;
- this.labelExpiryDateOfAccount.Text = item.ExpireAccount.ToString();
- this.labelExpiryDateOfPassword.Text = item.ExpirePassword.ToString();
- this.labelExpiryDateOfAccount2.Text = string.Format("{0:yy/MM/dd} ~ {1:yy/MM/dd}", item.DateRegister, item.DateExpireLogin);
- this.labelExpiryDateOfPassword2.Text = string.Format("{0:yy/MM/dd} ~ {1:yy/MM/dd}", item.DateLogin, item.DateExpireRegister);
+ if (this.listBoxUserList.SelectItemIndex == 0)
+ {
+ this.labelExpiryDateOfAccount.Text = "0";
+ this.labelExpiryDateOfPassword.Text = "0";
+ this.labelExpiryDateOfAccount2.Text = "-";
+ this.labelExpiryDateOfPassword2.Text = "-";
+ this.labelExpiryDateOfAccount2.TextColor = Color.White;
+ this.labelExpiryDateOfPassword2.TextColor = Color.White;
- this.CheckBoxCheckedAsLevel(item.Status);
+ this.SetEnableLevelButton(false);
+ this.buttonDelete.Visible = false;
+
+ if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Admin
+ || this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Developer)
+ this.SetEnablePassword(true);
+ else
+ this.SetEnablePassword(false);
+ }
+ else
+ {
+ #region 만료일
+ this.labelExpiryDateOfAccount.Text = item.ExpireId.ToString();
+ this.labelExpiryDateOfPassword.Text = item.ExpirePassword.ToString();
+
+ if (item.IsLockAccount == true)
+ {
+ this.labelExpiryDateOfAccount2.TextColor = Color.Red;
+ switch (this.ParentForm.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ this.labelExpiryDateOfAccount2.Text = "계정 만료";
+ break;
+ case Define.E_LanguageID.English:
+ this.labelExpiryDateOfAccount2.Text = "Account expiration";
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ this.labelExpiryDateOfAccount2.TextColor = Color.White;
+ this.labelExpiryDateOfAccount2.Text = string.Format("{0:yy/MM/dd} ~ {1:yy/MM/dd}", item.DateIdLogin, item.DateIdExpire);
+ }
+
+ if (item.IsLockPassword == true)
+ {
+ this.labelExpiryDateOfPassword2.TextColor = Color.Red;
+ switch (this.ParentForm.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ this.labelExpiryDateOfPassword2.Text = "비밀번호 만료";
+ break;
+ case Define.E_LanguageID.English:
+ this.labelExpiryDateOfPassword2.Text = "Password expiration";
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ this.labelExpiryDateOfPassword2.TextColor = Color.White;
+ this.labelExpiryDateOfPassword2.Text = string.Format("{0:yy/MM/dd} ~ {1:yy/MM/dd}", item.DatePasswordRegister, item.DatePasswordExpire);
+ }
+ #endregion
+
+ this.CheckBoxCheckedAsLevel(item.Group);
+
+ if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < item.ActiveLevel)
+ {
+ this.buttonDelete.Visible = false;
+ this.SetEnableLevelButton(false);
+ this.SetEnableExpireDate(false);
+
+ this.SetEnablePassword(false);
+ }
+ else
+ {
+ this.SetEnableLevelButton(true);
+ this.SetEnableExpireDate(true);
+ }
+ }
+
+ if (this.textBoxPassword.Text == this.SelectedUserItem.ResetPW)
+ this.SetTextBoxPasswordChar(true);
+ else
+ this.SetTextBoxPasswordChar(false);
//this.cbAdministrator.Visible = true;
//this.cbAdministrator.Checked = item.IsAdmin;
@@ -542,27 +742,6 @@ namespace INT_PT002.Controls
for (int i = 1; i < items.Count; i++)
this.listBoxUserList.AddItem(items[i]);
}
- //private void UpdateDefaultSetAccessrightDisplay(UserGroupItem item)
- //{
- // this.cbMainProductNo.Checked = item.IsMainDisplayProductNo;
- // this.cbMainWeightSet.Checked = item.IsMainDisplayWeightSetting;
- // this.cbMainClear.Checked = item.IsMainDisplayClear;
- // this.cbMainSubMenu.Checked = item.IsMainDisplaySubMenu;
-
- // this.cbMenuCalibration.Checked = item.IsMenuCalibration;
- // this.cbMenuConfiguration.Checked = item.IsMenuConfiguration;
- // this.cbMenuDataBackup.Checked = item.IsMenuDataBackup;
- // this.cbMenuDataStatistics.Checked = item.IsMenuDataStatistics;
- // this.cbMenuEquipmentSet.Checked = item.IsMenuEquipmentSetting;
- // this.cbMenuFactoryReset.Checked = item.IsMenuFactoryReset;
- // this.cbMenuInformation.Checked = item.IsMenuInformation;
- // this.cbMenuIOTest.Checked = item.IsMenuIOTest;
- // this.cbMenuMotorSet.Checked = item.IsMenuMotorSetting;
- // this.cbMenuSystemSet.Checked = item.IsMenuSystemSetting;
- // this.cbMenuTimeSet.Checked = item.IsMenuTimeSetting;
- // this.cbMenuUpdate.Checked = item.IsMenuUpdate;
- // this.cbMenuUserEditor.Checked = item.IsMenuUserSetting;
- //}
public void CallBackGetUserData(UserManager.UserMgr_user_list_t user)
{
@@ -597,6 +776,11 @@ namespace INT_PT002.Controls
{
this.UI_Invoke(delegate
{
+ string detail = "";
+
+ detail = string.Format("Add : {0}", user.user_id);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+
this.UpdateCurrentUserItem(user);
this.UpdateSelectUserDisplay(this.SelectedUserItem);
@@ -605,12 +789,12 @@ namespace INT_PT002.Controls
this.listBoxUserList.SelectItemIndex = this.listBoxUserList.ItemCount - 1;
this.SetEnableID(false);
- this.SetEnablePassword(false);
this.labelExpiryDateOfAccount.Enabled = false;
this.labelExpiryDateOfAccount.BackColor = Color.Silver;
this.labelExpiryDateOfPassword.Enabled = false;
this.labelExpiryDateOfPassword.BackColor = Color.Silver;
this.buttonDelete.Enabled = true;
+ this.SetEnableLevelButton(false);
DialogFormMessage dlg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, 0);
dlg.ShowDialog();
@@ -646,6 +830,11 @@ namespace INT_PT002.Controls
{
this.UI_Invoke(delegate
{
+ string detail = "";
+
+ detail = string.Format("Modify : {0}", user.user_id);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+
// 메시지 박스 교체
UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[this.listBoxUserList.SelectItemIndex]);
@@ -688,7 +877,7 @@ namespace INT_PT002.Controls
default:
break;
}
-
+
if (user.status == 0)
{
for (int i = 0; i < this.ParentForm.ParentForm.ListDllUserName.Count; i++)
@@ -713,8 +902,8 @@ namespace INT_PT002.Controls
//// Part 11
//if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true)
//{
- detail = string.Format("Delete : {0}", user.user_id);
- this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+ detail = string.Format("Delete : {0}", user.user_id);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
//}
}
else
@@ -724,35 +913,48 @@ namespace INT_PT002.Controls
}
}
public void CallBackUserListModifyInfoDataEvent(UserManager.UserMgr_user_info_t user)
- {
- //if (this.ChildControlUserSet.Visible == true)
- //{
- // this.ChildControlUserSet.CallBackUserListModifyInfoDataEvent(user);
- //}
- }
-
- private bool UI_Invoke(ThreadStart invoker)
{
try
{
- if (this.InvokeRequired)
+ if (user.status == 0)
{
- if (this.IsDisposed)
- return true;
+ string detail = "", code = "", message1 = "", message2 = "";
- this.Invoke(invoker);
+ this.textBoxPassword.Text = user.user_pw;
+ this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Password = user.user_pw;
+
+ detail = string.Format("Modify Password : {0}", user.user_id);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+
+ switch (this.ParentForm.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ code = "비밀번호 변경";
+ message1 = "비밀번호가 변경되었습니다.";
+ message2 = "";
+ break;
+ case Define.E_LanguageID.English:
+ code = "Change Password";
+ message1 = "Password has been changed.";
+ message2 = "";
+ break;
+ default:
+ break;
+ }
+
+ // 비밀번호가 변경되었습니다.
+ DialogFormMessage dlg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, 0);
+ dlg.ShowDialog();
}
else
{
- invoker();
+ DialogFormMessage myMsg = new DialogFormMessage(null, user.status, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
}
-
- return true;
-
}
- catch (Exception e)
+ catch (Exception ex)
{
- return false;
+ FormMain.Exception(ex);
}
}
@@ -761,21 +963,12 @@ namespace INT_PT002.Controls
this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplayMode = Define.E_DisplayModeStore.UserEditor;
this.ParentForm.ParentForm.SetDisplayMode(Define.E_EquipmentMode.Menu);
- this.UpdateInitializeUserDisplay(this.ParentForm.ParentForm.SystemConfig);
+ this.PasswordChar = false;
+ this.labelAutomaticLogoutTime.Text = this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT.ToString();
+ this.labelNumberOfLoginFailures.Text = this.ParentForm.ParentForm.SystemConfig.NUMBER_OF_LOGIN_FAILURE.ToString();
+
this.UpdateUserListBoxDisplay(this.ParentForm.ParentForm.ListDllUserName);
- this.listBoxUserList.SelectedIndexChanged -= new EventHandler(this.listBoxUserList_SelectedIndexChanged);
- this.listBoxUserList.SelectItemIndex = -1;
- this.listBoxUserList.SelectedIndexChanged += new EventHandler(this.listBoxUserList_SelectedIndexChanged);
-
- this.smartKeyboard.Hide();
- this.buttonRegister.Enabled = true;
- this.buttonDelete.Enabled = true;
- this.listBoxUserList.Enabled = true;
- this.SetEnablePassword(true);
- this.SetEnableID(true);
-
- if (this.buttonSave.Visible == true)
- this.buttonSave.Visible = false;
+ this.UpdateInitializeUserDisplay(this.ParentForm.ParentForm.SystemConfig);
}
#endregion
@@ -783,33 +976,58 @@ namespace INT_PT002.Controls
private void listBoxUserList_SelectedIndexChanged(object sender, EventArgs e)
{
int index = this.listBoxUserList.SelectItemIndex;
+ this.IsNew = false;
- if (index != -1)
+ this.SetEnablePassword(false);
+ //this.labelAutomaticLogoutTime.Enabled = true;
+ this.buttonSave.Visible = false;
+ if (this.buttonPasswordReset.ButtonText != "Reset")
+ this.buttonPasswordReset.ButtonText = "Reset";
+
+ if (index == 0)
{
- if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ID == this.listBoxUserList.Items[index] || index == 0)
- this.buttonDelete.Enabled = false;
+ UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index].ToString());
+ this.SetEnablePassword(true);
+ this.buttonPasswordReset.ButtonText = "Edit";
+ }
+ else if (index < 0)
+ {
+ this.UpdateInitializeUserDisplay(this.ParentForm.ParentForm.SystemConfig);
+ }
+ else if (index > 0)
+ {
+ if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ID == this.listBoxUserList.Items[index].ToString())
+ this.buttonDelete.Visible = false;
else
- this.buttonDelete.Enabled = true;
+ this.buttonDelete.Visible = true;
- this.ChangeUserControlEnable(true);
+ this.SetEnableID(false);
+ this.SetEnableControl(true);
- UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index]);
+ UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index].ToString());
}
}
+ private void textBoxID_GotFocus(object sender, EventArgs e)
+ {
+ this.smartKeyboard.TargetInputObject = this.textBoxID;
+
+ this.textBoxID.Select(this.textBoxID.Text.Length, 0);
+ }
+ private void textBoxPassword_GotFocus(object sender, EventArgs e)
+ {
+ this.smartKeyboard.TargetInputObject = this.textBoxPassword;
+
+ this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0);
+ }
private void textBoxID_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
e.Handled = true;
- this.smartKeyboard.Hide();
- this.buttonRegister.Enabled = true;
- this.buttonDelete.Enabled = true;
- this.groupBoxAccessRight.Enabled = true;
- this.listBoxUserList.Enabled = true;
- this.SetEnableID(true);
- this.SetEnablePassword(true);
+ this.ParentForm.Enabled = true;
+ this.KeyboardClose();
if (this.buttonSave.Visible == false)
this.buttonSave.Visible = true;
@@ -818,7 +1036,8 @@ namespace INT_PT002.Controls
{
e.Handled = true;
- this.textBoxID.Text = this.SelectedUserItem.ID;
+ this.ParentForm.Enabled = true;
+ this.textBoxID.Text = this.BeforeID;
this.KeyboardClose();
}
else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?'
@@ -832,14 +1051,13 @@ namespace INT_PT002.Controls
if (e.KeyChar == '\r')
{
e.Handled = true;
- this.smartKeyboard.Hide();
- this.buttonRegister.Enabled = true;
- this.buttonDelete.Enabled = true;
- this.groupBoxAccessRight.Enabled = true;
- this.listBoxUserList.Enabled = true;
- this.SetEnableID(true);
- this.SetEnablePassword(true);
+ if (this.PasswordChar == false)
+ this.SetTextBoxPasswordChar(this.PasswordChar);
+ this.KeyboardClose();
+
+ if (this.IsNew == true)
+ this.SetEnableID(true);
if (this.buttonSave.Visible == false)
this.buttonSave.Visible = true;
@@ -848,7 +1066,11 @@ namespace INT_PT002.Controls
{
e.Handled = true;
- this.textBoxPassword.Text = this.SelectedUserItem.Password;
+ if (this.PasswordChar == false)
+ this.SetTextBoxPasswordChar(this.PasswordChar);
+ if (this.IsNew == true)
+ this.SetEnableID(true);
+ this.textBoxPassword.Text = this.BeforePassword;
this.KeyboardClose();
}
else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?'
@@ -860,24 +1082,39 @@ namespace INT_PT002.Controls
private void smartKeyboard_OnXKeyClick(object sender, EventArgs e)
{
if (this.smartKeyboard.TargetInputObject == this.textBoxPassword)
- this.textBoxPassword.Text = this.SelectedUserItem.Password;
- else
- this.textBoxID.Text = this.SelectedUserItem.ID;
+ {
+ this.textBoxPassword.Text = this.BeforePassword;
+ if (this.PasswordChar == false)
+ this.SetTextBoxPasswordChar(this.PasswordChar);
+ this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0);
+ }
+ else if (this.smartKeyboard.TargetInputObject == this.textBoxID)
+ {
+ this.textBoxID.Text = this.BeforeID;
+ this.textBoxID.Select(this.textBoxID.Text.Length, 0);
+ }
this.KeyboardClose();
+
+ if (this.IsNew == true)
+ this.SetEnableID(true);
}
private void buttonRegister_Click(object sender, EventArgs e)
{
this.UserNew();
}
+ private void buttonSave_Click(object sender, EventArgs e)
+ {
+ this.SaveUserDll();
+ }
private void buttonDelete_Click(object sender, EventArgs e)
{
if (this.listBoxUserList.SelectItemIndex == -1)
return;
// 사용자를 삭제 하시겠습니까?
- DialogFormYesNo dlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 16);
+ DialogFormYesNo dlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 14);
if (dlg.ShowDialog() == DialogResult.Yes)
{
if (this.listBoxUserList.Items.Count <= 1)
@@ -886,14 +1123,33 @@ namespace INT_PT002.Controls
if (this.listBoxUserList.SelectItemIndex <= 0)
return;
- string id = this.listBoxUserList.Items[this.listBoxUserList.SelectItemIndex];
+ string id = this.listBoxUserList.Items[this.listBoxUserList.SelectItemIndex].ToString();
UserManager.UserManager_UserDel(id);
+
+ this.buttonDelete.Visible = false;
}
}
- private void buttonSave_Click(object sender, EventArgs e)
+
+ private void buttonLevel_Click(object sender, EventArgs e)
{
- this.SaveUserDll();
+ SmartX.SmartButton button = sender as SmartX.SmartButton;
+
+ if (button == this.buttonLevel1)
+ {
+ this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level1);
+ }
+ else if (button == this.buttonLevel2)
+ {
+ this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level2);
+ }
+ else if (button == this.buttonLevel3)
+ {
+ this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level3);
+ }
+
+ if (this.buttonSave.Visible == false)
+ this.buttonSave.Visible = true;
}
private void buttonIDEdit_Click(object sender, EventArgs e)
@@ -903,34 +1159,69 @@ namespace INT_PT002.Controls
this.smartKeyboard.Size = new Size(897, 352);
this.smartKeyboard.Hide();
+ this.BeforeID = this.textBoxID.Text;
+
this.smartKeyboard.TargetInputObject = this.textBoxID;
this.smartKeyboard.Show();
this.textBoxID.Select(this.textBoxID.Text.Length, 0);
- this.buttonRegister.Enabled = false;
- this.buttonDelete.Enabled = false;
- this.groupBoxAccessRight.Enabled = false;
this.listBoxUserList.Enabled = false;
- this.SetEnablePassword(false);
+ this.SetEnableControl(false);
}
- private void buttonPasswordEdit_Click(object sender, EventArgs e)
+ private void buttonPasswordReset_Click(object sender, EventArgs e)
{
- this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL;
- this.smartKeyboard.Location = new Point(5, 125);
- this.smartKeyboard.Size = new Size(897, 352);
- this.smartKeyboard.Hide();
+ if (this.buttonPasswordReset.ButtonText == "Edit")
+ {
+ if (this.listBoxUserList.SelectItemIndex == 0
+ && this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < 9)
+ return;
- this.smartKeyboard.TargetInputObject = this.textBoxPassword;
- this.smartKeyboard.Show();
+ this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL;
+ this.smartKeyboard.Location = new Point(5, 125);
+ this.smartKeyboard.Size = new Size(897, 352);
+ this.smartKeyboard.Hide();
- this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0);
+ this.BeforePassword = this.textBoxPassword.Text;
- this.buttonRegister.Enabled = false;
- this.buttonDelete.Enabled = false;
- this.groupBoxAccessRight.Enabled = false;
- this.listBoxUserList.Enabled = false;
- this.SetEnableID(false);
+ this.smartKeyboard.TargetInputObject = this.textBoxPassword;
+ this.smartKeyboard.Show();
+
+ this.SetTextBoxPasswordChar(true);
+ this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0);
+
+ this.listBoxUserList.Enabled = false;
+ this.SetEnableControl(false);
+ this.SetEnableID(false);
+ }
+ else
+ {
+ int ret = 0;
+ string id = "", pw = "";
+
+ if (this.listBoxUserList.Items.Count <= 1)
+ return;
+
+ if (this.listBoxUserList.SelectItemIndex <= 0)
+ return;
+
+ // 메시지
+ // 비밀번호를 초기화 하시겠습니까?
+ DialogFormYesNo dlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 18);
+ if (dlg.ShowDialog() == DialogResult.Yes)
+ {
+ id = this.SelectedUserItem.ID;
+ pw = this.SelectedUserItem.ResetPW;
+
+ ret = UserManager.UserManager_UserResetPWDirect(id, pw);
+
+ if (ret == 0)
+ {
+ this.SetTextBoxPasswordChar(true);
+ this.textBoxPassword.Text = pw;
+ }
+ }
+ }
}
private void labelExpiryDateOfAccount_Click(object sender, EventArgs e)
{
@@ -938,7 +1229,7 @@ namespace INT_PT002.Controls
if (myKeyPad.ShowDialog() == DialogResult.OK)
{
- if (myKeyPad.IntValue < 0)
+ if (myKeyPad.IntValue <= 0)
{
// 입력범위를 확인하세요
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
@@ -966,7 +1257,7 @@ namespace INT_PT002.Controls
if (myKeyPad.ShowDialog() == DialogResult.OK)
{
- if (myKeyPad.IntValue < 0)
+ if (myKeyPad.IntValue <= 0)
{
// 입력범위를 확인하세요
DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
@@ -1003,39 +1294,133 @@ namespace INT_PT002.Controls
else if (myKeyPad.IntValue > 90)
{
this.labelAutomaticLogoutTime.Text = "90";
-
- if (this.buttonSave.Visible == false)
- this.buttonSave.Visible = true;
}
else
{
this.labelAutomaticLogoutTime.Text = myKeyPad.StringValue;
+ }
- if (this.buttonSave.Visible == false)
- this.buttonSave.Visible = true;
+ this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT = int.Parse(this.labelAutomaticLogoutTime.Text);
+
+ if (this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT == 1)
+ this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 30;
+ else
+ this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime = 60;
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
+
+ UserManager.UserManager_AutoLogoutSetTimeout(this.ParentForm.ParentForm.SystemConfig.AUTOMATIC_LOGOUT, this.ParentForm.ParentForm.FlagAutomaticLogoutWarningTime);
+ }
+ }
+ private void labelNumberOfLoginFailures_Click(object sender, EventArgs e)
+ {
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelNumberOfLoginFailures.Text, 2, 0, false);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.IntValue <= 0)
+ {
+ // 입력범위를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelNumberOfLoginFailures.Text = myKeyPad.StringValue;
+ this.ParentForm.ParentForm.SystemConfig.NUMBER_OF_LOGIN_FAILURE = myKeyPad.IntValue;
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
}
}
}
-
- private void buttonLevel_Click(object sender, EventArgs e)
+ private void labelExpiryDateOfAccount2_Click(object sender, EventArgs e)
{
- SmartX.SmartButton button = sender as SmartX.SmartButton;
+ string code = "", message1 = "", message2 = "";
+ string detail = "";
- if (button == this.buttonLevel1)
+ if (this.labelExpiryDateOfAccount2.TextColor == Color.White)
{
- this.CheckBoxCheckedAsLevel(Define.E_UserStatus.Level1);
- }
- else if (button == this.buttonLevel2)
- {
- this.CheckBoxCheckedAsLevel(Define.E_UserStatus.Level2);
- }
- else if (button == this.buttonLevel3)
- {
- this.CheckBoxCheckedAsLevel(Define.E_UserStatus.Level3);
- }
+ if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < (int)Define.E_UserGroup.Level3)
+ return;
- if (this.buttonSave.Visible == false)
- this.buttonSave.Visible = true;
+ UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, true, false);
+
+ // Part 11
+ detail = string.Format("Extend EXP date(ID) : {0}", this.SelectedUserItem.ID);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+ }
+ else
+ {
+ switch (this.ParentForm.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ code = "유저설정";
+ message1 = "사용자 잠금 해제 하시겠습니까?";
+ message2 = "";
+ break;
+ case Define.E_LanguageID.English:
+ code = "User settings";
+ message1 = "Do you want to unlock user?";
+ message2 = "";
+ break;
+ default:
+ break;
+ }
+
+ DialogFormYesNo dlg = new DialogFormYesNo(Define.E_MessageBoxIcon.Question, code, message1, message2);
+ if (dlg.ShowDialog() == DialogResult.Yes)
+ {
+ UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, true, false);
+
+ // Part 11
+ detail = string.Format("Release ID : {0}", this.SelectedUserItem.ID);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+ }
+ }
+ }
+ private void labelExpiryDateOfPassword2_Click(object sender, EventArgs e)
+ {
+ string code = "", message1 = "", message2 = "";
+ string detail = "";
+
+ if (this.labelExpiryDateOfPassword2.TextColor == Color.White)
+ {
+ if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < (int)Define.E_UserGroup.Level3)
+ return;
+
+ UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, false, true);
+
+ // Part 11
+ detail = string.Format("Extend EXP date(PW) : {0}", this.SelectedUserItem.ID);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+ }
+ else
+ {
+ switch (this.ParentForm.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ code = "유저설정";
+ message1 = "비밀번호 잠금 해제 하시겠습니까?";
+ message2 = "";
+ break;
+ case Define.E_LanguageID.English:
+ code = "User settings";
+ message1 = "Do you want to unlock password?";
+ message2 = "";
+ break;
+ default:
+ break;
+ }
+
+ DialogFormYesNo dlg = new DialogFormYesNo(Define.E_MessageBoxIcon.Question, code, message1, message2);
+ if (dlg.ShowDialog() == DialogResult.Yes)
+ {
+ UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, false, true);
+
+ // Part 11
+ detail = string.Format("Release PW: {0}", this.SelectedUserItem.ID);
+ this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail);
+ }
+ }
}
#endregion
}
diff --git a/INT_PT002/DataStore/AlarmList.cs b/INT_PT002/DataStore/AlarmList.cs
index 1e3aed1..11f9f61 100644
--- a/INT_PT002/DataStore/AlarmList.cs
+++ b/INT_PT002/DataStore/AlarmList.cs
@@ -104,7 +104,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[9] != false)
{
this.CollectionIsSensorBoardError[9] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a16_SensorBoard10Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a16_SensorBoard10Error, "OFF");
}
}
else
@@ -112,7 +112,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[9] != true)
{
this.CollectionIsSensorBoardError[9] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a16_SensorBoard10Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a16_SensorBoard10Error, "ON");
}
}
// 알람 15-센서보드9 에러
@@ -121,7 +121,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[8] != false)
{
this.CollectionIsSensorBoardError[8] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a15_SensorBoard9Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a15_SensorBoard9Error, "OFF");
}
}
else
@@ -129,7 +129,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[8] != true)
{
this.CollectionIsSensorBoardError[8] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a15_SensorBoard9Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a15_SensorBoard9Error, "ON");
}
}
// 알람 14-센서보드8 에러
@@ -138,7 +138,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[7] != false)
{
this.CollectionIsSensorBoardError[7] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a14_SensorBoard8Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a14_SensorBoard8Error, "OFF");
}
}
else
@@ -146,7 +146,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[7] != true)
{
this.CollectionIsSensorBoardError[7] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a14_SensorBoard8Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a14_SensorBoard8Error, "ON");
}
}
// 알람 13-센서보드7 에러
@@ -155,7 +155,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[6] != false)
{
this.CollectionIsSensorBoardError[6] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a13_SensorBoard7Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a13_SensorBoard7Error, "OFF");
}
}
else
@@ -163,7 +163,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[6] != true)
{
this.CollectionIsSensorBoardError[6] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a13_SensorBoard7Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a13_SensorBoard7Error, "ON");
}
}
@@ -173,7 +173,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[5] != false)
{
this.CollectionIsSensorBoardError[5] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a12_SensorBoard6Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a12_SensorBoard6Error, "OFF");
}
}
else
@@ -181,7 +181,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[5] != true)
{
this.CollectionIsSensorBoardError[5] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a12_SensorBoard6Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a12_SensorBoard6Error, "ON");
}
}
// 알람 11-센서보드5 에러
@@ -190,7 +190,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[4] != false)
{
this.CollectionIsSensorBoardError[4] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a11_SensorBoard5Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a11_SensorBoard5Error, "OFF");
}
}
else
@@ -198,7 +198,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[4] != true)
{
this.CollectionIsSensorBoardError[4] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a11_SensorBoard5Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a11_SensorBoard5Error, "ON");
}
}
// 알람 10-센서보드4 에러
@@ -207,7 +207,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[3] != false)
{
this.CollectionIsSensorBoardError[3] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a10_SensorBoard4Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a10_SensorBoard4Error, "OFF");
}
}
else
@@ -215,7 +215,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[3] != true)
{
this.CollectionIsSensorBoardError[3] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a10_SensorBoard4Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a10_SensorBoard4Error, "ON");
}
}
// 알람 9-센서보드3 에러
@@ -224,7 +224,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[2] != false)
{
this.CollectionIsSensorBoardError[2] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a9_SensorBoard3Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a9_SensorBoard3Error, "OFF");
}
}
else
@@ -232,7 +232,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[2] != true)
{
this.CollectionIsSensorBoardError[2] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a9_SensorBoard3Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a9_SensorBoard3Error, "ON");
}
}
@@ -242,7 +242,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[1] != false)
{
this.CollectionIsSensorBoardError[1] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a8_SensorBoard2Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a8_SensorBoard2Error, "OFF");
}
}
else
@@ -250,7 +250,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[1] != true)
{
this.CollectionIsSensorBoardError[1] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a8_SensorBoard2Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a8_SensorBoard2Error, "ON");
}
}
// 알람 7-센서보드1 에러
@@ -259,7 +259,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[0] != false)
{
this.CollectionIsSensorBoardError[0] = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a7_SensorBoard1Error, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a7_SensorBoard1Error, "OFF");
}
}
else
@@ -267,7 +267,7 @@ namespace INT_PT002.DataStore
if (this.CollectionIsSensorBoardError[0] != true)
{
this.CollectionIsSensorBoardError[0] = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a7_SensorBoard1Error, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a7_SensorBoard1Error, "ON");
}
}
// 알람 6-압력에러
@@ -276,7 +276,7 @@ namespace INT_PT002.DataStore
if (this.IsPressureError != false)
{
this.IsPressureError = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a6_PressureError, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a6_PressureError, "OFF");
}
}
else
@@ -284,7 +284,7 @@ namespace INT_PT002.DataStore
if (this.IsPressureError != true)
{
this.IsPressureError = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a6_PressureError, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a6_PressureError, "ON");
}
}
// 알람 5-서보2 토크
@@ -293,7 +293,7 @@ namespace INT_PT002.DataStore
if (this.IsServoTorque2AlarmTorque != false)
{
this.IsServoTorque2AlarmTorque = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a5_Servo2TorqueAlarm, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a5_Servo2TorqueAlarm, "OFF");
}
}
else
@@ -301,7 +301,7 @@ namespace INT_PT002.DataStore
if (this.IsServoTorque2AlarmTorque != true)
{
this.IsServoTorque2AlarmTorque = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a5_Servo2TorqueAlarm, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a5_Servo2TorqueAlarm, "ON");
}
}
@@ -311,7 +311,7 @@ namespace INT_PT002.DataStore
if (this.IsServoTorque1AlarmTorque != false)
{
this.IsServoTorque1AlarmTorque = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a4_Servo1TorqueAlarm, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a4_Servo1TorqueAlarm, "OFF");
}
}
else
@@ -319,7 +319,7 @@ namespace INT_PT002.DataStore
if (this.IsServoTorque1AlarmTorque != true)
{
this.IsServoTorque1AlarmTorque = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a4_Servo1TorqueAlarm, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a4_Servo1TorqueAlarm, "ON");
}
}
// 알람 3-서보2 알람
@@ -328,7 +328,7 @@ namespace INT_PT002.DataStore
if (this.IsServo2Alarm != false)
{
this.IsServo2Alarm = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a3_Servo2Alarm, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a3_Servo2Alarm, "OFF");
}
}
else
@@ -336,7 +336,7 @@ namespace INT_PT002.DataStore
if (this.IsServo2Alarm != true)
{
this.IsServo2Alarm = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a3_Servo2Alarm, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a3_Servo2Alarm, "ON");
}
}
// 알람 2-서보1 알람
@@ -345,7 +345,7 @@ namespace INT_PT002.DataStore
if (this.IsServo1Alarm != false)
{
this.IsServo1Alarm = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a2_Servo1Alarm, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a2_Servo1Alarm, "OFF");
}
}
else
@@ -353,7 +353,7 @@ namespace INT_PT002.DataStore
if (this.IsServo1Alarm != true)
{
this.IsServo1Alarm = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a2_Servo1Alarm, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a2_Servo1Alarm, "ON");
}
}
// 알람 1-서보OFF
@@ -362,7 +362,7 @@ namespace INT_PT002.DataStore
if (this.IsServoEmergencyStop != false)
{
this.IsServoEmergencyStop = false;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a1_ServoEmergencyStop, "OFF");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a1_ServoEmergencyStop, "OFF");
}
}
else
@@ -370,7 +370,7 @@ namespace INT_PT002.DataStore
if (this.IsServoEmergencyStop != true)
{
this.IsServoEmergencyStop = true;
- this.EventAlarmStateChange(Define.E_Trackingalarm.a1_ServoEmergencyStop, "ON");
+ this.EventAlarmStateChange(Define.E_TrackingAlarm.a1_ServoEmergencyStop, "ON");
}
}
}
diff --git a/INT_PT002/DataStore/Define.cs b/INT_PT002/DataStore/Define.cs
index 6ab3a53..265534a 100644
--- a/INT_PT002/DataStore/Define.cs
+++ b/INT_PT002/DataStore/Define.cs
@@ -7,7 +7,7 @@ namespace INT_PT002.DataStore
{
public class Define
{
- public delegate void EventHandlerAlarmStateChange(Define.E_Trackingalarm alarm, string status);
+ public delegate void EventHandlerAlarmStateChange(Define.E_TrackingAlarm alarm, string status);
public enum E_EquipmentStatus
{
@@ -65,7 +65,8 @@ namespace INT_PT002.DataStore
{
_0_None,
_1_Information,
- _2_Status,
+ _2_Equipment,
+ _3_Ethernet,
}
public enum E_DisplayModeStore
@@ -73,6 +74,7 @@ namespace INT_PT002.DataStore
MainDisplay,
Recipe,
UserEditor,
+ UserMyPage,
UserGroupEditor,
IOTest,
LogInspection,
@@ -80,6 +82,13 @@ namespace INT_PT002.DataStore
LogAlarm,
Information,
Equipment,
+ Ethernet,
+ }
+
+ public enum E_CommMode
+ {
+ f0_None = 0,
+ f1_Modbus,
}
public enum E_ProcessStatus
@@ -137,24 +146,15 @@ namespace INT_PT002.DataStore
}
public enum E_UserGroup
- {
- f0_Level1 = 0,
- f1_Level2,
- f2_Level3,
- f3_Admin,
- f4_Developer,
- }
-
- public enum E_UserStatus
{
None = 0,
- Level1,
- Level2,
- Level3,
- Admin,
- Developer,
- NotLogin,
- LogOff,
+ Level1 = 1,
+ Level2 = 2,
+ Level3 = 3,
+ Admin = 4,
+ Developer = 5,
+ NotLogin = 6,
+ LogOut = 7,
}
public enum E_TrackingOperation
@@ -169,6 +169,13 @@ namespace INT_PT002.DataStore
Zero,
Clear,
UserEditor,
+
+ TryEthernetStart,
+ TryEthernetStop,
+ ClientConnect,
+ ClientDisconnect,
+ ServerON,
+ ServerOFF,
}
public enum E_TrackingParameter
@@ -204,9 +211,21 @@ namespace INT_PT002.DataStore
M1_Front2,
M2_Origin,
M2_Turn,
+
+ TCPOpMode,
+ TCPComMode,
+ TCPLocalPort,
+ TCPLocalIPConfig,
+ TCPLocalIPAddress,
+ TCPLocalSubnetMask,
+ TCPLocalGateway,
+ TCPServerIPAddress,
+ TCPServerPort,
+ Mod_Role,
+ Mod_StartAddr,
}
- public enum E_Trackingalarm
+ public enum E_TrackingAlarm
{
None,
a1_ServoEmergencyStop,
@@ -241,5 +260,12 @@ namespace INT_PT002.DataStore
Inspection,
Alarm,
}
+
+ public enum E_ModbusFunction
+ {
+ _04_ReadInputRegister,
+ _16_WriteMultipleRegister,
+ _03_ReadHoldingRegister,
+ }
}
}
diff --git a/INT_PT002/DataStore/SystemConfiguration.cs b/INT_PT002/DataStore/SystemConfiguration.cs
index 334df3d..daa6cc8 100644
--- a/INT_PT002/DataStore/SystemConfiguration.cs
+++ b/INT_PT002/DataStore/SystemConfiguration.cs
@@ -32,15 +32,25 @@ namespace INT_PT002.DataStore
private int m_SB_DATA_PERIOD;
private int m_AUTOMATIC_LOGOUT;
+ private int m_NUMBER_OF_LOGIN_FAILURE;
private int m_EQUIPMENT_LANE;
private int m_CHECK_LANE;
- private string m_SERIAL_NUMBER;
+ private int m_ETHERNET_COMM_MODE;
+ private int m_ETHERNET_OP_MODE;
+ private int m_ETHERNET_LOCAL_PORT;
+ private int m_ETHERNET_SERVER_PORT;
+ private int m_MODBUS_TCP_SELECTFUNCTION;
+ private int m_MODBUS_TCP_START_ADDRESS;
+ private string m_SERIAL_NUMBER;
+
private string m_LEVEL1_NAME;
private string m_LEVEL2_NAME;
private string m_LEVEL3_NAME;
+
+ private string m_ETHERNET_SERVER_IP;
#endregion
#region Constructor
@@ -138,6 +148,42 @@ namespace INT_PT002.DataStore
get { return this.m_AUTOMATIC_LOGOUT; }
set { this.m_AUTOMATIC_LOGOUT = value; }
}
+ public int NUMBER_OF_LOGIN_FAILURE
+ {
+ get { return this.m_NUMBER_OF_LOGIN_FAILURE; }
+ set { this.m_NUMBER_OF_LOGIN_FAILURE = value; }
+ }
+
+ public int ETHERNET_COMM_MODE
+ {
+ get { return this.m_ETHERNET_COMM_MODE; }
+ set { this.m_ETHERNET_COMM_MODE = value; }
+ }
+ public int ETHERNET_OP_MODE
+ {
+ get { return this.m_ETHERNET_OP_MODE; }
+ set { this.m_ETHERNET_OP_MODE = value; }
+ }
+ public int ETHERNET_LOCAL_PORT
+ {
+ get { return this.m_ETHERNET_LOCAL_PORT; }
+ set { this.m_ETHERNET_LOCAL_PORT = value; }
+ }
+ public int ETHERNET_SERVER_PORT
+ {
+ get { return this.m_ETHERNET_SERVER_PORT; }
+ set { this.m_ETHERNET_SERVER_PORT = value; }
+ }
+ public int MODBUS_TCP_SELECTFUNCTION
+ {
+ get { return this.m_MODBUS_TCP_SELECTFUNCTION; }
+ set { this.m_MODBUS_TCP_SELECTFUNCTION = value; }
+ }
+ public int MODBUS_TCP_START_ADDRESS
+ {
+ get { return this.m_MODBUS_TCP_START_ADDRESS; }
+ set { this.m_MODBUS_TCP_START_ADDRESS = value; }
+ }
public string LEVEL1_NAME
{
@@ -155,6 +201,12 @@ namespace INT_PT002.DataStore
set { this.m_LEVEL3_NAME = value; }
}
+ public string ETHERNET_SERVER_IP
+ {
+ get { return this.m_ETHERNET_SERVER_IP; }
+ set { this.m_ETHERNET_SERVER_IP = value; }
+ }
+
public int EQUIPMENT_LANE
{
get { return this.m_EQUIPMENT_LANE; }
@@ -191,15 +243,36 @@ namespace INT_PT002.DataStore
this.SB_DIFF_MODE = 1;
this.AUTOMATIC_LOGOUT = 10;
+ this.NUMBER_OF_LOGIN_FAILURE = 5;
+
+ this.ETHERNET_LOCAL_PORT = 0;
+ this.ETHERNET_SERVER_PORT = 0;
+ this.ETHERNET_COMM_MODE = 0;
+ this.ETHERNET_OP_MODE = 0;
+ this.MODBUS_TCP_SELECTFUNCTION = (int)Define.E_ModbusFunction._04_ReadInputRegister;
+ this.MODBUS_TCP_START_ADDRESS = 10;
this.EQUIPMENT_LANE = 10;
this.CHECK_LANE = 2;
- this.SERIAL_NUMBER = "23D0000";
+ this.SERIAL_NUMBER = "24D0000";
this.LEVEL1_NAME = "Level 1";
this.LEVEL2_NAME = "Level 2";
this.LEVEL3_NAME = "Level 3";
+
+ this.ETHERNET_SERVER_IP = "0.0.0.0";
+ }
+
+ public bool IsEthernetEnable
+ {
+ get
+ {
+ if (this.ETHERNET_OP_MODE != 0)
+ return true;
+ else
+ return false;
+ }
}
#endregion
}
@@ -208,6 +281,17 @@ namespace INT_PT002.DataStore
[StructLayout(LayoutKind.Sequential)]
public struct StructSystemConfigurationItem
{
+ public bool DummyBool1;
+ public bool DummyBool2;
+ public bool DummyBool3;
+ public bool DummyBool4;
+ public bool DummyBool5;
+ public bool DummyBool6;
+ public bool DummyBool7;
+ public bool DummyBool8;
+ public bool DummyBool9;
+ public bool DummyBool10;
+
public int RECIPE_NUMBER;
public Define.E_LanguageID LANGUAGE;
@@ -227,6 +311,27 @@ namespace INT_PT002.DataStore
public int EQUIPMENT_LANE;
public int CHECK_LANE;
+ public int AUTOMATIC_LOGOUT;
+ public int NUMBER_OF_LOGIN_FAILURE;
+
+ public int ETHERNET_COMM_MODE;
+ public int ETHERNET_OP_MODE;
+ public int ETHERNET_LOCAL_PORT;
+ public int ETHERNET_SERVER_PORT;
+ public int MODBUS_TCP_SELECTFUNCTION;
+ public int MODBUS_TCP_START_ADDRESS;
+
+ public int DummyInt1;
+ public int DummyInt2;
+ public int DummyInt3;
+ public int DummyInt4;
+ public int DummyInt5;
+ public int DummyInt6;
+ public int DummyInt7;
+ public int DummyInt8;
+ public int DummyInt9;
+ public int DummyInt10;
+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public string SERIAL_NUMBER;
@@ -236,6 +341,20 @@ namespace INT_PT002.DataStore
public string LEVEL2_NAME;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string LEVEL3_NAME;
+
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string ETHERNET_SERVER_IP;
+
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString1;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString2;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString3;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString4;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString5;
}
#endregion
}
diff --git a/INT_PT002/DataStore/User.cs b/INT_PT002/DataStore/User.cs
index a54c11c..5460c17 100644
--- a/INT_PT002/DataStore/User.cs
+++ b/INT_PT002/DataStore/User.cs
@@ -94,7 +94,8 @@ namespace INT_PT002.DataStore
private bool m_IsMenuInspectionLog;
private bool m_IsMenuAlarmLog;
private bool m_IsMenuInformation;
- private bool m_IsMenuStatus;
+ private bool m_IsMenuEquipment;
+ private bool m_IsMenuEthernet;
#endregion
#region Constructor
@@ -162,10 +163,15 @@ namespace INT_PT002.DataStore
get { return this.m_IsMenuInformation; }
set { this.m_IsMenuInformation = value; }
}
- public bool IsMenuStatus
+ public bool IsMenuEquipment
{
- get { return this.m_IsMenuStatus; }
- set { this.m_IsMenuStatus = value; }
+ get { return this.m_IsMenuEquipment; }
+ set { this.m_IsMenuEquipment = value; }
+ }
+ public bool IsMenuEthernet
+ {
+ get { return this.m_IsMenuEthernet; }
+ set { this.m_IsMenuEthernet = value; }
}
public bool IsMainEnable
@@ -235,7 +241,7 @@ namespace INT_PT002.DataStore
{
bool ret = false;
- if (this.IsMenuInformation == true || this.IsMenuStatus == true)
+ if (this.IsMenuInformation == true || this.IsMenuEquipment == true || this.IsMenuEthernet == true)
ret = true;
return ret;
@@ -258,7 +264,8 @@ namespace INT_PT002.DataStore
this.IsMenuInspectionLog = false;
this.IsMenuAlarmLog = false;
this.IsMenuInformation = false;
- this.IsMenuStatus = false;
+ this.IsMenuEquipment = false;
+ this.IsMenuEthernet = false;
}
#endregion
}
@@ -280,6 +287,7 @@ namespace INT_PT002.DataStore
public bool IsMenuAlarmList;
public bool IsMenuInformation;
public bool IsMenuStatus;
+ public bool IsMenuEthernet;
public bool Dummy1;
public bool Dummy2;
@@ -298,7 +306,6 @@ namespace INT_PT002.DataStore
public bool Dummy15;
public bool Dummy16;
public bool Dummy17;
- public bool Dummy18;
}
#endregion
@@ -310,26 +317,27 @@ namespace INT_PT002.DataStore
private string m_ID;
private string m_Password;
- private string m_PreviousPassword1;
- private string m_PreviousPassword2;
- private string m_PreviousPassword3;
+ private string m_ResetPW;
- private int m_ExpireAccount;
+ private int m_ExpireId;
private int m_ExpirePassword;
private bool m_IsLockAccount;
private bool m_IsLockPassword;
- private DateTime m_DateRegister;
- private DateTime m_DateLogin;
- private DateTime m_DateExpireRegister;
- private DateTime m_DateExpireLogin;
+ private DateTime m_DatePasswordRegister;
+ private DateTime m_DateIdLogin;
+ private DateTime m_DatePasswordExpire;
+ private DateTime m_DateIdExpire;
- private Define.E_UserStatus m_Status;
+ private Define.E_UserGroup m_Group;
private bool m_IsAdmin;
private int m_ActiveLevel;
+
+ private int m_IsFirstPassword;
+ private int m_LoginFailCount;
#endregion
#region Constructor
@@ -356,26 +364,16 @@ namespace INT_PT002.DataStore
get { return this.m_Password; }
set { this.m_Password = value; }
}
- public string PreviousPassword1
+ public string ResetPW
{
- get { return this.m_PreviousPassword1; }
- set { this.m_PreviousPassword1 = value; }
- }
- public string PreviousPassword2
- {
- get { return this.m_PreviousPassword2; }
- set { this.m_PreviousPassword2 = value; }
- }
- public string PreviousPassword3
- {
- get { return this.m_PreviousPassword3; }
- set { this.m_PreviousPassword3 = value; }
+ get { return this.m_ResetPW; }
+ private set { this.m_ResetPW = value; }
}
- public int ExpireAccount
+ public int ExpireId
{
- get { return this.m_ExpireAccount; }
- set { this.m_ExpireAccount = value; }
+ get { return this.m_ExpireId; }
+ set { this.m_ExpireId = value; }
}
public int ExpirePassword
{
@@ -394,31 +392,31 @@ namespace INT_PT002.DataStore
set { this.m_IsLockPassword = value; }
}
- public DateTime DateRegister
+ public DateTime DatePasswordRegister
{
- get { return this.m_DateRegister; }
- set { this.m_DateRegister = value; }
+ get { return this.m_DatePasswordRegister; }
+ set { this.m_DatePasswordRegister = value; }
}
- public DateTime DateLogin
+ public DateTime DateIdLogin
{
- get { return this.m_DateLogin; }
- set { this.m_DateLogin = value; }
+ get { return this.m_DateIdLogin; }
+ set { this.m_DateIdLogin = value; }
}
- public DateTime DateExpireRegister
+ public DateTime DatePasswordExpire
{
- get { return this.m_DateExpireRegister; }
- set { this.m_DateExpireRegister = value; }
+ get { return this.m_DatePasswordExpire; }
+ set { this.m_DatePasswordExpire = value; }
}
- public DateTime DateExpireLogin
+ public DateTime DateIdExpire
{
- get { return this.m_DateExpireLogin; }
- set { this.m_DateExpireLogin = value; }
+ get { return this.m_DateIdExpire; }
+ set { this.m_DateIdExpire = value; }
}
- public Define.E_UserStatus Status
+ public Define.E_UserGroup Group
{
- get { return this.m_Status; }
- set { this.m_Status = value; }
+ get { return this.m_Group; }
+ set { this.m_Group = value; }
}
public bool IsAdmin
@@ -432,6 +430,17 @@ namespace INT_PT002.DataStore
get { return this.m_ActiveLevel; }
set { this.m_ActiveLevel = value; }
}
+
+ public int IsFirstPassword
+ {
+ get { return this.m_IsFirstPassword; }
+ set { this.m_IsFirstPassword = value; }
+ }
+ public int LoginFailCount
+ {
+ get { return this.m_LoginFailCount; }
+ set { this.m_LoginFailCount = value; }
+ }
#endregion
#region Method
@@ -440,34 +449,44 @@ namespace INT_PT002.DataStore
this.IsUpdate = false;
this.ID = "";
- this.Password = "";
+ this.Password = "Password12!";
+ this.ResetPW = "Password12!";
- this.PreviousPassword1 = "";
- this.PreviousPassword2 = "";
- this.PreviousPassword3 = "";
-
- this.ExpireAccount = 0;
+ this.ExpireId = 0;
this.ExpirePassword = 0;
- this.DateRegister = DateTime.Now;
- this.DateLogin = DateTime.Now;
- this.DateExpireRegister = DateTime.Now;
- this.DateExpireLogin = DateTime.Now;
+ this.DatePasswordRegister = DateTime.Now;
+ this.DateIdLogin = DateTime.Now;
+ this.DatePasswordExpire = DateTime.Now;
+ this.DateIdExpire = DateTime.Now;
- this.Status = Define.E_UserStatus.None;
+ this.Group = Define.E_UserGroup.None;
this.IsAdmin = false;
this.ActiveLevel = 1;
+
+ this.IsFirstPassword = 1; //[1] 최초 비밀번호(비밀번호 변경창 띄우기), [0] 비밀번호 변경완료됨
+ this.LoginFailCount = 5;
}
- public void SetPassword(string pass)
+ public int GetPasswordExpiryDday()
{
- this.PreviousPassword3 = this.PreviousPassword2;
- this.PreviousPassword2 = this.PreviousPassword1;
- this.PreviousPassword1 = pass;
- this.Password = pass;
+ int ret = 0;
+ DateTime timeNow = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
+ TimeSpan dayDiff;
+
+ if (this.Group == Define.E_UserGroup.Admin || this.Group == Define.E_UserGroup.Developer)
+ ret = 9999;
+ else
+ {
+ dayDiff = timeNow.Date - this.DatePasswordExpire.Date;
+ ret = dayDiff.Days;
+ }
+
+ return ret;
}
+
public bool CheckID(string id)
{
bool ret = false;
diff --git a/INT_PT002/DialogForms/DialogFormHexKeyPad.Designer.cs b/INT_PT002/DialogForms/DialogFormHexKeyPad.Designer.cs
new file mode 100644
index 0000000..9611bb2
--- /dev/null
+++ b/INT_PT002/DialogForms/DialogFormHexKeyPad.Designer.cs
@@ -0,0 +1,392 @@
+namespace INT_PT002.DialogForms
+{
+ partial class DialogFormHexKeyPad
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.labelTitle = new SmartX.SmartLabel();
+ this.labelScreen = new SmartX.SmartLabel();
+ this.buttonEnter = new System.Windows.Forms.Button();
+ this.buttonCancel = new System.Windows.Forms.Button();
+ this.buttonNumber9 = new System.Windows.Forms.Button();
+ this.buttonNumber6 = new System.Windows.Forms.Button();
+ this.buttonNumber3 = new System.Windows.Forms.Button();
+ this.buttonNumber0 = new System.Windows.Forms.Button();
+ this.buttonNumber8 = new System.Windows.Forms.Button();
+ this.buttonNumber5 = new System.Windows.Forms.Button();
+ this.buttonNumber2 = new System.Windows.Forms.Button();
+ this.buttonNumber7 = new System.Windows.Forms.Button();
+ this.buttonNumber4 = new System.Windows.Forms.Button();
+ this.buttonNumber1 = new System.Windows.Forms.Button();
+ this.buttonCharF = new System.Windows.Forms.Button();
+ this.buttonCharC = new System.Windows.Forms.Button();
+ this.buttonCharE = new System.Windows.Forms.Button();
+ this.buttonCharB = new System.Windows.Forms.Button();
+ this.buttonCharD = new System.Windows.Forms.Button();
+ this.buttonCharA = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // labelTitle
+ //
+ this.labelTitle.BackGround = null;
+ this.labelTitle.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.labelTitle.BorderColor = System.Drawing.Color.Black;
+ this.labelTitle.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitle.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Regular);
+ this.labelTitle.ForeColor = System.Drawing.Color.White;
+ this.labelTitle.LineSpacing = 0F;
+ this.labelTitle.Location = new System.Drawing.Point(3, 3);
+ this.labelTitle.Name = "labelTitle";
+ this.labelTitle.OverlapOptimize = true;
+ this.labelTitle.PasswordChar = '\0';
+ this.labelTitle.Radius = 3;
+ this.labelTitle.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitle.Size = new System.Drawing.Size(200, 20);
+ this.labelTitle.TabIndex = 75;
+ this.labelTitle.Text = "Hex Keypad";
+ this.labelTitle.TextColor = System.Drawing.Color.White;
+ this.labelTitle.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitle.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top;
+ this.labelTitle.Wordwrap = false;
+ //
+ // labelScreen
+ //
+ this.labelScreen.BackGround = null;
+ this.labelScreen.BackGroundColor = System.Drawing.Color.White;
+ this.labelScreen.BorderColor = System.Drawing.Color.Black;
+ this.labelScreen.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelScreen.Font = new System.Drawing.Font("Arial", 40F, System.Drawing.FontStyle.Bold);
+ this.labelScreen.LineSpacing = 0F;
+ this.labelScreen.Location = new System.Drawing.Point(16, 29);
+ this.labelScreen.Name = "labelScreen";
+ this.labelScreen.OverlapOptimize = true;
+ this.labelScreen.PasswordChar = '\0';
+ this.labelScreen.Radius = 3;
+ this.labelScreen.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelScreen.Size = new System.Drawing.Size(420, 70);
+ this.labelScreen.TabIndex = 74;
+ this.labelScreen.Text = "123.45";
+ this.labelScreen.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelScreen.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelScreen.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelScreen.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelScreen.Wordwrap = false;
+ //
+ // buttonEnter
+ //
+ this.buttonEnter.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonEnter.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonEnter.ForeColor = System.Drawing.Color.White;
+ this.buttonEnter.Location = new System.Drawing.Point(300, 229);
+ this.buttonEnter.Name = "buttonEnter";
+ this.buttonEnter.Size = new System.Drawing.Size(136, 116);
+ this.buttonEnter.TabIndex = 88;
+ this.buttonEnter.TabStop = false;
+ this.buttonEnter.Text = "Enter";
+ this.buttonEnter.Click += new System.EventHandler(this.buttonEnter_Click);
+ //
+ // buttonCancel
+ //
+ this.buttonCancel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCancel.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCancel.ForeColor = System.Drawing.Color.White;
+ this.buttonCancel.Location = new System.Drawing.Point(229, 229);
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.Size = new System.Drawing.Size(65, 116);
+ this.buttonCancel.TabIndex = 84;
+ this.buttonCancel.TabStop = false;
+ this.buttonCancel.Text = "ESC";
+ this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
+ //
+ // buttonNumber9
+ //
+ this.buttonNumber9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber9.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber9.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber9.Location = new System.Drawing.Point(158, 229);
+ this.buttonNumber9.Name = "buttonNumber9";
+ this.buttonNumber9.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber9.TabIndex = 83;
+ this.buttonNumber9.TabStop = false;
+ this.buttonNumber9.Text = "9";
+ this.buttonNumber9.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber6
+ //
+ this.buttonNumber6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber6.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber6.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber6.Location = new System.Drawing.Point(158, 168);
+ this.buttonNumber6.Name = "buttonNumber6";
+ this.buttonNumber6.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber6.TabIndex = 85;
+ this.buttonNumber6.TabStop = false;
+ this.buttonNumber6.Text = "6";
+ this.buttonNumber6.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber3
+ //
+ this.buttonNumber3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber3.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber3.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber3.Location = new System.Drawing.Point(158, 107);
+ this.buttonNumber3.Name = "buttonNumber3";
+ this.buttonNumber3.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber3.TabIndex = 87;
+ this.buttonNumber3.TabStop = false;
+ this.buttonNumber3.Text = "3";
+ this.buttonNumber3.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber0
+ //
+ this.buttonNumber0.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber0.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber0.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber0.Location = new System.Drawing.Point(16, 290);
+ this.buttonNumber0.Name = "buttonNumber0";
+ this.buttonNumber0.Size = new System.Drawing.Size(207, 55);
+ this.buttonNumber0.TabIndex = 86;
+ this.buttonNumber0.TabStop = false;
+ this.buttonNumber0.Text = "0";
+ this.buttonNumber0.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber8
+ //
+ this.buttonNumber8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber8.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber8.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber8.Location = new System.Drawing.Point(87, 229);
+ this.buttonNumber8.Name = "buttonNumber8";
+ this.buttonNumber8.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber8.TabIndex = 82;
+ this.buttonNumber8.TabStop = false;
+ this.buttonNumber8.Text = "8";
+ this.buttonNumber8.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber5
+ //
+ this.buttonNumber5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber5.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber5.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber5.Location = new System.Drawing.Point(87, 168);
+ this.buttonNumber5.Name = "buttonNumber5";
+ this.buttonNumber5.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber5.TabIndex = 78;
+ this.buttonNumber5.TabStop = false;
+ this.buttonNumber5.Text = "5";
+ this.buttonNumber5.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber2
+ //
+ this.buttonNumber2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber2.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber2.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber2.Location = new System.Drawing.Point(87, 107);
+ this.buttonNumber2.Name = "buttonNumber2";
+ this.buttonNumber2.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber2.TabIndex = 77;
+ this.buttonNumber2.TabStop = false;
+ this.buttonNumber2.Text = "2";
+ this.buttonNumber2.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber7
+ //
+ this.buttonNumber7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber7.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber7.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber7.Location = new System.Drawing.Point(16, 229);
+ this.buttonNumber7.Name = "buttonNumber7";
+ this.buttonNumber7.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber7.TabIndex = 81;
+ this.buttonNumber7.TabStop = false;
+ this.buttonNumber7.Text = "7";
+ this.buttonNumber7.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber4
+ //
+ this.buttonNumber4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber4.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber4.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber4.Location = new System.Drawing.Point(16, 168);
+ this.buttonNumber4.Name = "buttonNumber4";
+ this.buttonNumber4.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber4.TabIndex = 80;
+ this.buttonNumber4.TabStop = false;
+ this.buttonNumber4.Text = "4";
+ this.buttonNumber4.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonNumber1
+ //
+ this.buttonNumber1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonNumber1.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonNumber1.ForeColor = System.Drawing.Color.White;
+ this.buttonNumber1.Location = new System.Drawing.Point(16, 107);
+ this.buttonNumber1.Name = "buttonNumber1";
+ this.buttonNumber1.Size = new System.Drawing.Size(65, 55);
+ this.buttonNumber1.TabIndex = 79;
+ this.buttonNumber1.TabStop = false;
+ this.buttonNumber1.Text = "1";
+ this.buttonNumber1.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonCharF
+ //
+ this.buttonCharF.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCharF.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCharF.ForeColor = System.Drawing.Color.White;
+ this.buttonCharF.Location = new System.Drawing.Point(371, 168);
+ this.buttonCharF.Name = "buttonCharF";
+ this.buttonCharF.Size = new System.Drawing.Size(65, 55);
+ this.buttonCharF.TabIndex = 93;
+ this.buttonCharF.TabStop = false;
+ this.buttonCharF.Text = "F";
+ this.buttonCharF.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonCharC
+ //
+ this.buttonCharC.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCharC.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCharC.ForeColor = System.Drawing.Color.White;
+ this.buttonCharC.Location = new System.Drawing.Point(371, 107);
+ this.buttonCharC.Name = "buttonCharC";
+ this.buttonCharC.Size = new System.Drawing.Size(65, 55);
+ this.buttonCharC.TabIndex = 94;
+ this.buttonCharC.TabStop = false;
+ this.buttonCharC.Text = "C";
+ this.buttonCharC.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonCharE
+ //
+ this.buttonCharE.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCharE.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCharE.ForeColor = System.Drawing.Color.White;
+ this.buttonCharE.Location = new System.Drawing.Point(300, 168);
+ this.buttonCharE.Name = "buttonCharE";
+ this.buttonCharE.Size = new System.Drawing.Size(65, 55);
+ this.buttonCharE.TabIndex = 90;
+ this.buttonCharE.TabStop = false;
+ this.buttonCharE.Text = "E";
+ this.buttonCharE.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonCharB
+ //
+ this.buttonCharB.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCharB.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCharB.ForeColor = System.Drawing.Color.White;
+ this.buttonCharB.Location = new System.Drawing.Point(300, 107);
+ this.buttonCharB.Name = "buttonCharB";
+ this.buttonCharB.Size = new System.Drawing.Size(65, 55);
+ this.buttonCharB.TabIndex = 89;
+ this.buttonCharB.TabStop = false;
+ this.buttonCharB.Text = "B";
+ this.buttonCharB.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonCharD
+ //
+ this.buttonCharD.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCharD.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCharD.ForeColor = System.Drawing.Color.White;
+ this.buttonCharD.Location = new System.Drawing.Point(229, 168);
+ this.buttonCharD.Name = "buttonCharD";
+ this.buttonCharD.Size = new System.Drawing.Size(65, 55);
+ this.buttonCharD.TabIndex = 92;
+ this.buttonCharD.TabStop = false;
+ this.buttonCharD.Text = "D";
+ this.buttonCharD.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // buttonCharA
+ //
+ this.buttonCharA.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ this.buttonCharA.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold);
+ this.buttonCharA.ForeColor = System.Drawing.Color.White;
+ this.buttonCharA.Location = new System.Drawing.Point(229, 107);
+ this.buttonCharA.Name = "buttonCharA";
+ this.buttonCharA.Size = new System.Drawing.Size(65, 55);
+ this.buttonCharA.TabIndex = 91;
+ this.buttonCharA.TabStop = false;
+ this.buttonCharA.Text = "A";
+ this.buttonCharA.Click += new System.EventHandler(this.buttonNumber_Click);
+ //
+ // DialogFormHexKeyPad
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(110)))), ((int)(((byte)(165)))));
+ this.ClientSize = new System.Drawing.Size(455, 360);
+ this.ControlBox = false;
+ this.Controls.Add(this.buttonCharF);
+ this.Controls.Add(this.buttonCharC);
+ this.Controls.Add(this.buttonCharE);
+ this.Controls.Add(this.buttonCharB);
+ this.Controls.Add(this.buttonCharD);
+ this.Controls.Add(this.buttonCharA);
+ this.Controls.Add(this.buttonEnter);
+ this.Controls.Add(this.buttonCancel);
+ this.Controls.Add(this.buttonNumber9);
+ this.Controls.Add(this.buttonNumber6);
+ this.Controls.Add(this.buttonNumber3);
+ this.Controls.Add(this.buttonNumber0);
+ this.Controls.Add(this.buttonNumber8);
+ this.Controls.Add(this.buttonNumber5);
+ this.Controls.Add(this.buttonNumber2);
+ this.Controls.Add(this.buttonNumber7);
+ this.Controls.Add(this.buttonNumber4);
+ this.Controls.Add(this.buttonNumber1);
+ this.Controls.Add(this.labelTitle);
+ this.Controls.Add(this.labelScreen);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Name = "DialogFormHexKeyPad";
+ this.Text = "DialogFormPasswordKeyPad1";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private SmartX.SmartLabel labelTitle;
+ private SmartX.SmartLabel labelScreen;
+ private System.Windows.Forms.Button buttonEnter;
+ private System.Windows.Forms.Button buttonCancel;
+ private System.Windows.Forms.Button buttonNumber9;
+ private System.Windows.Forms.Button buttonNumber6;
+ private System.Windows.Forms.Button buttonNumber3;
+ private System.Windows.Forms.Button buttonNumber0;
+ private System.Windows.Forms.Button buttonNumber8;
+ private System.Windows.Forms.Button buttonNumber5;
+ private System.Windows.Forms.Button buttonNumber2;
+ private System.Windows.Forms.Button buttonNumber7;
+ private System.Windows.Forms.Button buttonNumber4;
+ private System.Windows.Forms.Button buttonNumber1;
+ private System.Windows.Forms.Button buttonCharF;
+ private System.Windows.Forms.Button buttonCharC;
+ private System.Windows.Forms.Button buttonCharE;
+ private System.Windows.Forms.Button buttonCharB;
+ private System.Windows.Forms.Button buttonCharD;
+ private System.Windows.Forms.Button buttonCharA;
+
+ }
+}
\ No newline at end of file
diff --git a/INT_PT002/DialogForms/DialogFormHexKeyPad.cs b/INT_PT002/DialogForms/DialogFormHexKeyPad.cs
new file mode 100644
index 0000000..8f877a8
--- /dev/null
+++ b/INT_PT002/DialogForms/DialogFormHexKeyPad.cs
@@ -0,0 +1,162 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+using SmartX;
+using INT_PT002.DataStore;
+
+namespace INT_PT002.DialogForms
+{
+ public partial class DialogFormHexKeyPad : Form
+ {
+ #region Field
+ private string m_InputKey;
+ private int m_Digit;
+
+ private string m_StringValue;
+ #endregion
+
+ #region Property
+ public string InputKey
+ {
+ get { return this.m_InputKey; }
+ set { this.m_InputKey = value; }
+ }
+ private int Digit
+ {
+ get { return this.m_Digit; }
+ set { this.m_Digit = value; }
+ }
+
+ public string StringValue
+ {
+ get { return this.m_StringValue; }
+ private set { this.m_StringValue = value; }
+ }
+ #endregion
+
+ #region Constructor
+ public DialogFormHexKeyPad(string value, int digit, Define.E_LanguageID language)
+ {
+ InitializeComponent();
+
+ this.InitializeDesign(language);
+ this.Digit = digit;
+ this.labelScreen.Text = value;
+ }
+ #endregion
+
+ #region Method
+ private void InputNum(string key)
+ {
+ if (this.InputKey.Length >= this.Digit)
+ {
+ this.InputKey = key;
+ this.labelScreen.Text = this.InputKey;
+ }
+ else
+ {
+ this.InputKey += key;
+ this.labelScreen.Text = this.InputKey;
+ }
+ }
+
+ private void InitializeDesign(Define.E_LanguageID language)
+ {
+ if (language == Define.E_LanguageID.English)
+ {
+ this.buttonCancel.Text = "ESC";
+ this.buttonEnter.Text = "Enter";
+ }
+ else
+ {
+ this.buttonCancel.Text = "ESC";
+ this.buttonEnter.Text = "Enter";
+ }
+ }
+ private void InitializeControl()
+ {
+ int x = 0, y = 0;
+
+ x = Screen.PrimaryScreen.Bounds.Width / 2 - this.Size.Width / 2;
+ y = Screen.PrimaryScreen.Bounds.Height / 2 - this.Size.Height / 2;
+
+ this.Location = new Point(x, y);
+ this.Size = new Size(455, 360);
+
+ this.InputKey = "";
+ }
+ #endregion
+
+ #region Override Member
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ this.InitializeControl();
+ }
+ #endregion
+
+ #region Event Handler
+ private void buttonEnter_Click(object sender, EventArgs e)
+ {
+ if (this.labelScreen.Text.Length == this.Digit)
+ {
+ this.StringValue = this.labelScreen.Text;
+ this.DialogResult = DialogResult.OK;
+ }
+ }
+
+ private void buttonNumber_Click(object sender, EventArgs e)
+ {
+ Button bt = sender as Button;
+
+ if (bt == null)
+ return;
+
+ if (bt == this.buttonNumber0)
+ this.InputNum("0");
+ else if (bt == this.buttonNumber1)
+ this.InputNum("1");
+ else if (bt == this.buttonNumber2)
+ this.InputNum("2");
+ else if (bt == this.buttonNumber3)
+ this.InputNum("3");
+ else if (bt == this.buttonNumber4)
+ this.InputNum("4");
+ else if (bt == this.buttonNumber5)
+ this.InputNum("5");
+ else if (bt == this.buttonNumber6)
+ this.InputNum("6");
+ else if (bt == this.buttonNumber7)
+ this.InputNum("7");
+ else if (bt == this.buttonNumber8)
+ this.InputNum("8");
+ else if (bt == this.buttonNumber9)
+ this.InputNum("9");
+ else if (bt == this.buttonCharA)
+ this.InputNum("A");
+ else if (bt == this.buttonCharB)
+ this.InputNum("B");
+ else if (bt == this.buttonCharC)
+ this.InputNum("C");
+ else if (bt == this.buttonCharD)
+ this.InputNum("D");
+ else if (bt == this.buttonCharE)
+ this.InputNum("E");
+ else if (bt == this.buttonCharF)
+ this.InputNum("F");
+ }
+
+ private void buttonCancel_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/INT_PT002/DialogForms/DialogFormHexKeyPad.resx b/INT_PT002/DialogForms/DialogFormHexKeyPad.resx
new file mode 100644
index 0000000..a721046
--- /dev/null
+++ b/INT_PT002/DialogForms/DialogFormHexKeyPad.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ WEBPAD
+
+
+ False
+
+
\ No newline at end of file
diff --git a/INT_PT002/DialogForms/DialogFormLogOn.Designer.cs b/INT_PT002/DialogForms/DialogFormLogOn.Designer.cs
index 83e305b..eceda0f 100644
--- a/INT_PT002/DialogForms/DialogFormLogOn.Designer.cs
+++ b/INT_PT002/DialogForms/DialogFormLogOn.Designer.cs
@@ -32,8 +32,8 @@
this.smartGroupBox1 = new SmartX.SmartGroupBox();
this.textBoxPassword = new System.Windows.Forms.TextBox();
this.textBoxID = new System.Windows.Forms.TextBox();
- this.smartLabel3 = new SmartX.SmartLabel();
- this.smartLabel2 = new SmartX.SmartLabel();
+ this.labelTitlePassword = new SmartX.SmartLabel();
+ this.labelTitleID = new SmartX.SmartLabel();
this.buttonCancel = new SmartX.SmartButton();
this.buttonLogOn = new SmartX.SmartButton();
this.smartKeyboard = new SmartX.SmartKeyboard();
@@ -49,8 +49,8 @@
this.smartGroupBox1.BackImage = null;
this.smartGroupBox1.Controls.Add(this.textBoxPassword);
this.smartGroupBox1.Controls.Add(this.textBoxID);
- this.smartGroupBox1.Controls.Add(this.smartLabel3);
- this.smartGroupBox1.Controls.Add(this.smartLabel2);
+ this.smartGroupBox1.Controls.Add(this.labelTitlePassword);
+ this.smartGroupBox1.Controls.Add(this.labelTitleID);
this.smartGroupBox1.Controls.Add(this.buttonCancel);
this.smartGroupBox1.Controls.Add(this.buttonLogOn);
this.smartGroupBox1.Controls.Add(this.smartKeyboard);
@@ -62,7 +62,7 @@
this.smartGroupBox1.Location = new System.Drawing.Point(0, 0);
this.smartGroupBox1.Name = "smartGroupBox1";
this.smartGroupBox1.RoundRadius = 5;
- this.smartGroupBox1.Size = new System.Drawing.Size(600, 379);
+ this.smartGroupBox1.Size = new System.Drawing.Size(650, 400);
this.smartGroupBox1.TabIndex = 8;
this.smartGroupBox1.Text = "Login";
this.smartGroupBox1.TextColor = System.Drawing.Color.White;
@@ -70,8 +70,9 @@
// textBoxPassword
//
this.textBoxPassword.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Regular);
- this.textBoxPassword.Location = new System.Drawing.Point(141, 94);
+ this.textBoxPassword.Location = new System.Drawing.Point(199, 97);
this.textBoxPassword.Name = "textBoxPassword";
+ this.textBoxPassword.PasswordChar = '*';
this.textBoxPassword.Size = new System.Drawing.Size(261, 37);
this.textBoxPassword.TabIndex = 98;
this.textBoxPassword.GotFocus += new System.EventHandler(this.textBoxPassword_GotFocus);
@@ -79,57 +80,57 @@
// textBoxID
//
this.textBoxID.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Regular);
- this.textBoxID.Location = new System.Drawing.Point(141, 51);
+ this.textBoxID.Location = new System.Drawing.Point(199, 54);
this.textBoxID.Name = "textBoxID";
this.textBoxID.Size = new System.Drawing.Size(261, 37);
this.textBoxID.TabIndex = 97;
this.textBoxID.GotFocus += new System.EventHandler(this.textBoxID_GotFocus);
//
- // smartLabel3
+ // labelTitlePassword
//
- this.smartLabel3.BackGround = null;
- this.smartLabel3.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
- this.smartLabel3.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.smartLabel3.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.smartLabel3.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
- this.smartLabel3.LineSpacing = 0F;
- this.smartLabel3.Location = new System.Drawing.Point(23, 94);
- this.smartLabel3.Name = "smartLabel3";
- this.smartLabel3.OverlapOptimize = true;
- this.smartLabel3.PasswordChar = '\0';
- this.smartLabel3.Radius = 3;
- this.smartLabel3.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.smartLabel3.Size = new System.Drawing.Size(112, 37);
- this.smartLabel3.TabIndex = 96;
- this.smartLabel3.Text = "Password";
- this.smartLabel3.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.smartLabel3.TextColorDisable = System.Drawing.Color.Gray;
- this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
- this.smartLabel3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.smartLabel3.Wordwrap = false;
+ this.labelTitlePassword.BackGround = null;
+ this.labelTitlePassword.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.labelTitlePassword.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitlePassword.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitlePassword.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.labelTitlePassword.LineSpacing = 0F;
+ this.labelTitlePassword.Location = new System.Drawing.Point(23, 97);
+ this.labelTitlePassword.Name = "labelTitlePassword";
+ this.labelTitlePassword.OverlapOptimize = true;
+ this.labelTitlePassword.PasswordChar = '\0';
+ this.labelTitlePassword.Radius = 3;
+ this.labelTitlePassword.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitlePassword.Size = new System.Drawing.Size(170, 37);
+ this.labelTitlePassword.TabIndex = 96;
+ this.labelTitlePassword.Text = "Password";
+ this.labelTitlePassword.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitlePassword.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitlePassword.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTitlePassword.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitlePassword.Wordwrap = false;
//
- // smartLabel2
+ // labelTitleID
//
- this.smartLabel2.BackGround = null;
- this.smartLabel2.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
- this.smartLabel2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.smartLabel2.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.smartLabel2.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
- this.smartLabel2.LineSpacing = 0F;
- this.smartLabel2.Location = new System.Drawing.Point(23, 51);
- this.smartLabel2.Name = "smartLabel2";
- this.smartLabel2.OverlapOptimize = true;
- this.smartLabel2.PasswordChar = '\0';
- this.smartLabel2.Radius = 3;
- this.smartLabel2.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.smartLabel2.Size = new System.Drawing.Size(112, 37);
- this.smartLabel2.TabIndex = 95;
- this.smartLabel2.Text = "ID";
- this.smartLabel2.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.smartLabel2.TextColorDisable = System.Drawing.Color.Gray;
- this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
- this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.smartLabel2.Wordwrap = false;
+ this.labelTitleID.BackGround = null;
+ this.labelTitleID.BackGroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.labelTitleID.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitleID.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTitleID.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.labelTitleID.LineSpacing = 0F;
+ this.labelTitleID.Location = new System.Drawing.Point(23, 54);
+ this.labelTitleID.Name = "labelTitleID";
+ this.labelTitleID.OverlapOptimize = true;
+ this.labelTitleID.PasswordChar = '\0';
+ this.labelTitleID.Radius = 3;
+ this.labelTitleID.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTitleID.Size = new System.Drawing.Size(170, 37);
+ this.labelTitleID.TabIndex = 95;
+ this.labelTitleID.Text = "ID";
+ this.labelTitleID.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTitleID.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTitleID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTitleID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleID.Wordwrap = false;
//
// buttonCancel
//
@@ -141,12 +142,12 @@
this.buttonCancel.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
this.buttonCancel.ButtonText = "Cancel";
this.buttonCancel.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
- this.buttonCancel.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold);
+ this.buttonCancel.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.buttonCancel.GroupID = 0;
this.buttonCancel.ImageDisable = null;
this.buttonCancel.ImageDown = null;
this.buttonCancel.ImageUp = null;
- this.buttonCancel.Location = new System.Drawing.Point(494, 51);
+ this.buttonCancel.Location = new System.Drawing.Point(552, 54);
this.buttonCancel.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.NestedClickEventPrevent = false;
@@ -177,12 +178,12 @@
this.buttonLogOn.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
this.buttonLogOn.ButtonText = "Login";
this.buttonLogOn.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
- this.buttonLogOn.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold);
+ this.buttonLogOn.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.buttonLogOn.GroupID = 0;
this.buttonLogOn.ImageDisable = null;
this.buttonLogOn.ImageDown = null;
this.buttonLogOn.ImageUp = null;
- this.buttonLogOn.Location = new System.Drawing.Point(408, 51);
+ this.buttonLogOn.Location = new System.Drawing.Point(466, 54);
this.buttonLogOn.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
this.buttonLogOn.Name = "buttonLogOn";
this.buttonLogOn.NestedClickEventPrevent = false;
@@ -228,7 +229,7 @@
this.smartKeyboard.KeyUpImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage1")));
this.smartKeyboard.KeyUpImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage2")));
this.smartKeyboard.KeyUpImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage3")));
- this.smartKeyboard.Location = new System.Drawing.Point(7, 139);
+ this.smartKeyboard.Location = new System.Drawing.Point(6, 143);
this.smartKeyboard.MarginLeftRight = 7;
this.smartKeyboard.MarginTopBottom = 7;
this.smartKeyboard.Name = "smartKeyboard";
@@ -236,8 +237,8 @@
this.smartKeyboard.Radius = 5;
this.smartKeyboard.RoundedCorners = false;
this.smartKeyboard.RoundRectFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
- this.smartKeyboard.Size = new System.Drawing.Size(585, 232);
- this.smartKeyboard.SizeRunTime = new System.Drawing.Size(585, 232);
+ this.smartKeyboard.Size = new System.Drawing.Size(637, 252);
+ this.smartKeyboard.SizeRunTime = new System.Drawing.Size(637, 252);
this.smartKeyboard.TabIndex = 90;
this.smartKeyboard.TABKeyDisable = false;
this.smartKeyboard.TargetInputObject = null;
@@ -263,7 +264,7 @@
this.smartForm1.Mode = SmartXUIBase.SmartUIControlFormBase.RUNMODE.RUNTIME;
this.smartForm1.MouseCursor = SmartX.SmartForm.OnOff.OFF;
this.smartForm1.Name = "smartForm1";
- this.smartForm1.Size = new System.Drawing.Size(600, 379);
+ this.smartForm1.Size = new System.Drawing.Size(650, 400);
this.smartForm1.SpecialFunctionClickPointSize = 100;
this.smartForm1.UseMainMenu = false;
//
@@ -271,7 +272,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.ClientSize = new System.Drawing.Size(600, 379);
+ this.ClientSize = new System.Drawing.Size(650, 400);
this.ControlBox = false;
this.Controls.Add(this.smartForm1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
@@ -289,8 +290,8 @@
private SmartX.SmartButton buttonCancel;
private SmartX.SmartButton buttonLogOn;
private SmartX.SmartKeyboard smartKeyboard;
- private SmartX.SmartLabel smartLabel3;
- private SmartX.SmartLabel smartLabel2;
+ private SmartX.SmartLabel labelTitlePassword;
+ private SmartX.SmartLabel labelTitleID;
private System.Windows.Forms.TextBox textBoxID;
private System.Windows.Forms.TextBox textBoxPassword;
private SmartX.SmartForm smartForm1;
diff --git a/INT_PT002/DialogForms/DialogFormLogOn.cs b/INT_PT002/DialogForms/DialogFormLogOn.cs
index f438421..66bf387 100644
--- a/INT_PT002/DialogForms/DialogFormLogOn.cs
+++ b/INT_PT002/DialogForms/DialogFormLogOn.cs
@@ -17,16 +17,32 @@ namespace INT_PT002.Forms
{
#region Field
private FormMain m_ParentForm;
+ private bool IsLoginMode;
+ private bool IsChangePassword;
#endregion
#region Constructor
- public DialogFormLogOn(FormMain parent)
+ public DialogFormLogOn(FormMain parent, bool login, bool changePass)
{
InitializeComponent();
this.ParentForm = parent;
+ this.IsLoginMode = login;
+ this.IsChangePassword = changePass;
+
+ if (this.IsChangePassword == false)
+ {
+ this.InitializeDesignForLogin();
+
+ this.textBoxID.PasswordChar = default(char);
+ }
+ else
+ {
+ this.InitializeDesignForChangePassword();
+
+ this.textBoxID.PasswordChar = '*';
+ }
- this.InitializeDesign();
this.InitializeControl();
this.DefaultSetting();
}
@@ -41,6 +57,74 @@ namespace INT_PT002.Forms
#endregion
#region Method
+ private string ReturnUserStatus(int num)
+ {
+ string ret = "";
+
+ switch (num)
+ {
+ case 1:
+ ret = "ID_Not found";
+ break;
+ case 2:
+ ret = "ID_Duplication";
+ break;
+ case 3:
+ ret = "ID_Too short";
+ break;
+ case 4:
+ ret = "ID_Too long";
+ break;
+ case 5:
+ ret = "ID_Consecutive or duplicate char";
+ break;
+ case 6:
+ ret = "ID_Invalid char";
+ break;
+ case 7:
+ ret = "ID_Lock";
+ break;
+ case 8:
+ ret = "PW_Duplicate prev PW";
+ break;
+ case 9:
+ ret = "PW_Too short";
+ break;
+ case 10:
+ ret = "PW_Too long";
+ break;
+ case 11:
+ ret = "PW_Consecutive or duplicate char";
+ break;
+ case 12:
+ ret = "PW_Invalid char";
+ break;
+ case 13:
+ ret = "PW_Not include char";
+ break;
+ case 14:
+ ret = "PW_Incorrect";
+ break;
+ case 15:
+ ret = "PW_Lock";
+ break;
+ case 16:
+ ret = "PW_Over expire period";
+ break;
+ case 17:
+ ret = "ID_Over expire period";
+ break;
+ case 18:
+ ret = "Auto logout";
+ break;
+ default:
+ ret = "";
+ break;
+ }
+
+ return ret;
+ }
+
private void InitializeDesign()
{
@@ -51,7 +135,13 @@ namespace INT_PT002.Forms
this.textBoxPassword.Text = "";
this.textBoxID.Focus();
- this.Location = new Point(157, 150);
+ int x = 0, y = 0;
+
+ x = Screen.PrimaryScreen.Bounds.Width / 2 - this.Size.Width / 2;
+ y = Screen.PrimaryScreen.Bounds.Height / 2 - this.Size.Height / 2;
+
+ this.Location = new Point(x, y);
+ this.Size = new Size(650, 400);
//this.smartKeyboard.HanYoungKeyToggle();
this.smartKeyboard.HanYoungKeyDisable = true;
@@ -63,18 +153,293 @@ namespace INT_PT002.Forms
}
- public void CB_UserLogin(UserItem item)
+ private void InitializeDesignForLogin()
{
-
+ if (this.ParentForm.SystemConfig.LANGUAGE == Define.E_LanguageID.English)
+ {
+ this.smartGroupBox1.Text = "User Login";
+ this.labelTitleID.Text = "ID";
+ this.labelTitlePassword.Text = "Password";
+ }
+ else
+ {
+ this.smartGroupBox1.Text = "로그인";
+ this.labelTitleID.Text = "ID";
+ this.labelTitlePassword.Text = "비밀번호";
+ }
}
- #endregion
-
- #region Override Member
- protected override void OnLoad(EventArgs e)
+ private void InitializeDesignForChangePassword()
{
- base.OnLoad(e);
+ if (this.ParentForm.SystemConfig.LANGUAGE == Define.E_LanguageID.English)
+ {
+ this.smartGroupBox1.Text = "Change Password";
+ this.labelTitleID.Text = "New";
+ this.labelTitlePassword.Text = "Verify";
+ }
+ else
+ {
+ this.smartGroupBox1.Text = "비밀번호 변경";
+ this.labelTitleID.Text = "새 비밀번호";
+ this.labelTitlePassword.Text = "비밀번호 확인";
+ }
+ }
- this.Size = new Size(602, 381);
+ private void LogOn()
+ {
+ UserManager.UserMgr_user_info_t userInfo = new UserManager.UserMgr_user_info_t();
+
+ if (this.textBoxID.Text == "")
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : ID blank");
+
+ // ID : 6~20자 입력 하세요
+ DialogFormMessage myMsg = new DialogFormMessage(null, 3, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+ if (this.textBoxPassword.Text == "")
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : PW blank");
+
+ // PASSWORD : 6~20자 입력 하세요
+ DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+
+ if (this.textBoxID.Text == "admin00" && this.textBoxPassword.Text == "admin20090810")
+ {
+ DialogFormYesNo dlg = new DialogFormYesNo(this.ParentForm.SystemConfig.LANGUAGE, 29);
+ if (dlg.ShowDialog() == DialogResult.Yes)
+ {
+ this.ParentForm.ChildFormMainDisplay.ChangeID = this.textBoxID.Text;
+ this.DialogResult = DialogResult.Abort;
+ this.Close();
+ }
+ return;
+ }
+
+ UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.textBoxPassword.Text, ref userInfo);
+
+ //Console.Write("\n" + string.Format("userInfo.fFirstPW {0:yyyy-MM-dd HH:mm:ss}: {1}", DateTime.Now, userInfo.fFirstPW));
+ //Console.Write("\n" + string.Format("userInfo.status {0:yyyy-MM-dd HH:mm:ss}: {1}", DateTime.Now, userInfo.status));
+
+ if (userInfo.status == 0 && userInfo.fFirstPW == 0)
+ {
+ //MessageBox.Show("로그인 성공");
+
+ #region 로그인 성공
+ if (userInfo.active_level == 1)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Level1;
+ else if (userInfo.active_level == 2)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Level2;
+ else if (userInfo.active_level == 3)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Level3;
+ else if (userInfo.active_level == 9)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Admin;
+ else if (userInfo.active_level == 10)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Developer;
+
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ID = userInfo.user_id;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Password = userInfo.user_pw;
+
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ExpireId = userInfo.id_expire_period;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword = userInfo.password_expire_period;
+
+ DateTime time = DateTime.ParseExact(userInfo.password_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DatePasswordRegister = time;
+ time = DateTime.ParseExact(userInfo.id_login_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DateIdLogin = time;
+ time = DateTime.ParseExact(userInfo.id_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DateIdExpire = time;
+ time = DateTime.ParseExact(userInfo.password_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DatePasswordExpire = time;
+
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsLockAccount = userInfo.id_flock_status == 0 ? false : true;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsLockPassword = userInfo.password_flock_status == 0 ? false : true;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsAdmin = userInfo.fadmin == 0 ? false : true;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel = userInfo.active_level;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsFirstPassword = userInfo.fFirstPW;
+ #endregion
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Success");
+
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+ else if (userInfo.fFirstPW == 1)
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "First login", this.textBoxID.Text);
+
+ // 최초 로그인 시 비밀번호 변경
+ this.ParentForm.ChildFormMainDisplay.ChangeID = this.textBoxID.Text;
+ this.DialogResult = DialogResult.Abort;
+ this.Close();
+ }
+ else if (userInfo.status == 14) // password error
+ {
+ if (this.textBoxID.Text == "admin00")
+ {
+ // 비밀번호를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(null, userInfo.status, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+
+ if (userInfo.login_fail_count < this.ParentForm.SystemConfig.NUMBER_OF_LOGIN_FAILURE)
+ {
+ // 비밀번호 n회 오류입니다
+ // n회 오류 시, 계정이 잠금처리됩니다.
+ DialogFormMessage myMsg = new DialogFormMessage(null, userInfo.status, userInfo.login_fail_count,
+ this.ParentForm.SystemConfig.NUMBER_OF_LOGIN_FAILURE, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, string.Format("Fail : PW error {0}", userInfo.login_fail_count), this.textBoxID.Text);
+ }
+ else
+ {
+ // 계정이 잠금처리 되었습니다.
+ // 관리자에게 문의하세요.
+ DialogFormMessage myMsg = new DialogFormMessage(null, 19, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ UserManager.UserManager_UserLoginFailLockSet(this.textBoxID.Text);
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Account lock", this.textBoxID.Text);
+ }
+ }
+ else
+ {
+ DialogFormMessage myMsg = new DialogFormMessage(null, userInfo.status, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ // 비밀번호 만료 시
+ if (userInfo.status == 15)
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Password expiration", this.textBoxID.Text);
+
+ this.ParentForm.ChildFormMainDisplay.ChangeID = this.textBoxID.Text;
+ this.DialogResult = DialogResult.Abort;
+ this.Close();
+ }
+ else
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : " + this.ReturnUserStatus(userInfo.status), this.textBoxID.Text);
+ }
+ }
+ }
+ private void ChangePassword()
+ {
+ int ret = 0;
+ string id = "", pass = "";
+ UserManager.UserMgr_user_info_t userInfo = new UserManager.UserMgr_user_info_t();
+
+ if (this.textBoxID.Text == "")
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : TextBox1 blank");
+
+ // New Password : 6~20자 입력 하세요
+ DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+ if (this.textBoxPassword.Text == "")
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : TextBox2 blank");
+
+ // New Password Confirmation : 6~20자 입력 하세요
+ DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+ if (this.textBoxID.Text.Equals(this.textBoxPassword.Text) == false)
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : Diffrent char");
+
+ // 비밀번호를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(null, 14, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+
+ return;
+ }
+
+ if (this.IsLoginMode == true)
+ id = this.ParentForm.CurrentSystemStatus.CurrentUser.ID;
+ else
+ id = this.ParentForm.ChildFormMainDisplay.ChangeID;
+
+ pass = this.textBoxID.Text;
+ ret = UserManager.UserManager_UserModifyPWDirect(id, pass);
+
+ // 비밀번호 변경이 완료 되면 로그인 시도
+ if (ret == 0)
+ {
+ UserManager.UserManager_UserLoginDirect(id, pass, ref userInfo);
+
+ if (userInfo.status == 0)
+ {
+ //MessageBox.Show("로그인 성공");
+
+ #region 로그인 성공
+ if (userInfo.active_level == 1)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Level1;
+ else if (userInfo.active_level == 2)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Level2;
+ else if (userInfo.active_level == 3)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Level3;
+ else if (userInfo.active_level == 9)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Admin;
+ else if (userInfo.active_level == 10)
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Developer;
+
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ID = userInfo.user_id;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Password = userInfo.user_pw;
+
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ExpireId = userInfo.id_expire_period;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword = userInfo.password_expire_period;
+
+ DateTime time = DateTime.ParseExact(userInfo.password_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DatePasswordRegister = time;
+ time = DateTime.ParseExact(userInfo.id_login_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DateIdLogin = time;
+ time = DateTime.ParseExact(userInfo.id_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DateIdExpire = time;
+ time = DateTime.ParseExact(userInfo.password_expire_date.GetDateTime(), "yyyyMMddHHmmss", null);
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DatePasswordExpire = time;
+
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsLockAccount = userInfo.id_flock_status == 0 ? false : true;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsLockPassword = userInfo.password_flock_status == 0 ? false : true;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsAdmin = userInfo.fadmin == 0 ? false : true;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel = userInfo.active_level;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.IsFirstPassword = userInfo.fFirstPW;
+ #endregion
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Success");
+
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+ else
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Fail : " + this.ReturnUserStatus(ret));
+
+ DialogFormMessage myMsg = new DialogFormMessage(null, ret, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+ }
+ }
+ else
+ {
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "Failure change password");
+
+ // 비밀번호 변경 실패 시 메시지??
+ DialogFormMessage myMsg = new DialogFormMessage(null, ret, this.ParentForm.SystemConfig.LANGUAGE);
+ myMsg.ShowDialog();
+ }
}
#endregion
@@ -84,167 +449,10 @@ namespace INT_PT002.Forms
// Automatic Logout Reset
this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset();
- #region Login1
- //User user = null;
-
- //user = this.ParentForm.CurrentCollectionUser.FindUser(this.labelID.Text);
-
- //if (user != null)
- //{
- // if (user.Password == this.labelPassword.Text)
- // {
- // this.ParentForm.SystemConfig.CURRENT_USER.ID = user.ID;
- // this.ParentForm.SystemConfig.CURRENT_USER.Password = user.Password;
- // this.ParentForm.SystemConfig.CURRENT_USER.Group = user.Group;
-
- // this.DialogResult = DialogResult.OK;
- // this.Close();
- // }
- // else
- // {
- // DialogFormMessage myMsg = new DialogFormMessage(33, this.ParentForm.SystemConfig.LANGUAGE);
- // myMsg.ShowDialog();
- // }
- //}
- //else
- //{
- // DialogFormMessage myMsg = new DialogFormMessage(32, this.ParentForm.SystemConfig.LANGUAGE);
- // myMsg.ShowDialog();
- //}
- #endregion
-
- #region Login2
- //UserItem user = null;
-
- //user = this.ParentForm.FindUser(this.labelID.Text);
- //if (user != null)
- //{
- // if (user.Password == this.labelPassword.Text)
- // {
-
- // if (user.ID == "Intech")
- // this.ParentForm.SystemConfig.CURRENT_USER.Status = Define.E_UserStatus.Developer;
- // else if (user.ID == "Admin00")
- // this.ParentForm.SystemConfig.CURRENT_USER.Status = Define.E_UserStatus.Admin;
- // else
- // this.ParentForm.SystemConfig.CURRENT_USER.Status = Define.E_UserStatus.Guest;
-
- // this.ParentForm.SystemConfig.CURRENT_USER.ID = user.ID;
- // this.ParentForm.SystemConfig.CURRENT_USER.Password = user.Password;
- // this.ParentForm.SystemConfig.CURRENT_USER.PreviousPassword1 = user.PreviousPassword1;
- // this.ParentForm.SystemConfig.CURRENT_USER.PreviousPassword2 = user.PreviousPassword2;
- // this.ParentForm.SystemConfig.CURRENT_USER.PreviousPassword3 = user.PreviousPassword3;
- // this.ParentForm.SystemConfig.CURRENT_USER.ExpireAccount = user.ExpireAccount;
- // this.ParentForm.SystemConfig.CURRENT_USER.ExpirePassword = user.ExpirePassword;
- // this.ParentForm.SystemConfig.CURRENT_USER.DateRegister = user.DateRegister;
- // this.ParentForm.SystemConfig.CURRENT_USER.DateLogin = user.DateLogin; // Login 시간 저장하는 코드 추가할것
- // this.ParentForm.SystemConfig.CURRENT_USER.IsAdmin = user.IsAdmin;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMainProductNo = user.IsMainProductNo;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMainWeightSetting = user.IsMainWeightSetting;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMainClear = user.IsMainClear;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMainSubMenu = user.IsMainSubMenu;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuTimeSetting = user.IsMenuTimeSetting;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuInformation = user.IsMenuInformation;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuDataBackup = user.IsMenuDataBackup;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuConfiguration = user.IsMenuConfiguration;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuCalibration = user.IsMenuCalibration;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuSystemSetting = user.IsMenuSystemSetting;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuMotorSetting = user.IsMenuMotorSetting;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuIOTest = user.IsMenuIOTest;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuUpdate = user.IsMenuUpdate;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuFactoryReset = user.IsMenuFactoryReset;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuUserEditor = user.IsMenuUserEditor;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuEquipmentSetting = user.IsMenuEquipmentSetting;
- // this.ParentForm.SystemConfig.CURRENT_USER.IsMenuDataStatistics = user.IsMenuDataStatistics;
-
- // this.DialogResult = DialogResult.OK;
- // this.Close();
- // }
- // else
- // {
- // // Password 확인하세요
- // DialogFormMessage myMsg = new DialogFormMessage(33, this.ParentForm.SystemConfig.LANGUAGE);
- // myMsg.ShowDialog();
- // }
- //}
- //else
- //{
- // // ID 확인하세요
- // DialogFormMessage myMsg = new DialogFormMessage(32, this.ParentForm.SystemConfig.LANGUAGE);
- // myMsg.ShowDialog();
- //}
- #endregion
-
- #region Login3
- UserManager.UserMgr_user_info_t userInfo = new UserManager.UserMgr_user_info_t();
-
- if (this.textBoxID.Text == "")
- {
- // ID : 4~20자 입력 하세요
- DialogFormMessage myMsg = new DialogFormMessage(null, 3, this.ParentForm.SystemConfig.LANGUAGE);
- myMsg.ShowDialog();
-
- return;
- }
- if (this.textBoxPassword.Text == "")
- {
- // PASSWORD : 4~20자 입력 하세요
- DialogFormMessage myMsg = new DialogFormMessage(null, 9, this.ParentForm.SystemConfig.LANGUAGE);
- myMsg.ShowDialog();
-
- return;
- }
-
- UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.textBoxPassword.Text, ref userInfo);
-
- if (userInfo.status == 0)
- {
- //MessageBox.Show("로그인 성공");
-
- #region 로그인 성공
- if (userInfo.active_level == 1)
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.Level1;
- else if (userInfo.active_level == 2)
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.Level2;
- else if (userInfo.active_level == 3)
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.Level3;
- else if(userInfo.active_level == 9)
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.Admin;
- else if (userInfo.active_level == 10)
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.Developer;
-
- this.ParentForm.CurrentSystemStatus.CurrentUser.ID = userInfo.user_id;
- this.ParentForm.CurrentSystemStatus.CurrentUser.Password = userInfo.user_pw;
-
- this.ParentForm.CurrentSystemStatus.CurrentUser.ExpireAccount = userInfo.expire_period_account;
- this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword = userInfo.expire_period_pw;
-
- DateTime time = DateTime.ParseExact(userInfo.register_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.ParentForm.CurrentSystemStatus.CurrentUser.DateRegister = time;
- time = DateTime.ParseExact(userInfo.login_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.ParentForm.CurrentSystemStatus.CurrentUser.DateLogin = time;
- time = DateTime.ParseExact(userInfo.expire_account_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.ParentForm.CurrentSystemStatus.CurrentUser.DateExpireLogin = time;
- time = DateTime.ParseExact(userInfo.expire_register_date.GetDateTime(), "yyyyMMddHHmmss", null);
- this.ParentForm.CurrentSystemStatus.CurrentUser.DateExpireRegister = time;
-
- this.ParentForm.CurrentSystemStatus.CurrentUser.IsLockAccount = userInfo.flock_status_account == 0 ? false : true;
- this.ParentForm.CurrentSystemStatus.CurrentUser.IsLockPassword = userInfo.flock_status_password == 0 ? false : true;
-
- this.ParentForm.CurrentSystemStatus.CurrentUser.IsAdmin = userInfo.fadmin == 0 ? false : true;
-
- this.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel = userInfo.active_level;
- #endregion
-
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
+ if (this.IsChangePassword == false)
+ this.LogOn();
else
- {
- DialogFormMessage myMsg = new DialogFormMessage(null, userInfo.status, this.ParentForm.SystemConfig.LANGUAGE);
- myMsg.ShowDialog();
- }
- #endregion
+ this.ChangePassword();
}
private void buttonCancel_Click(object sender, EventArgs e)
{
diff --git a/INT_PT002/DialogForms/DialogFormLogOn.resx b/INT_PT002/DialogForms/DialogFormLogOn.resx
index e740150..4b88847 100644
--- a/INT_PT002/DialogForms/DialogFormLogOn.resx
+++ b/INT_PT002/DialogForms/DialogFormLogOn.resx
@@ -599,40 +599,43 @@
- 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
+ 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
+ SUVORK5CYII=
diff --git a/INT_PT002/DialogForms/DialogFormMessage.cs b/INT_PT002/DialogForms/DialogFormMessage.cs
index b696c50..f3f39e9 100644
--- a/INT_PT002/DialogForms/DialogFormMessage.cs
+++ b/INT_PT002/DialogForms/DialogFormMessage.cs
@@ -469,6 +469,52 @@ namespace INT_PT002.DialogForms
}
}
+ public DialogFormMessage(object dll, int code, int num1, int num2, Define.E_LanguageID language)
+ {
+ InitializeComponent();
+
+ this.smartGroupBox1.Text = "";
+ this.labelMessage1.Text = "";
+ this.labelMessage2.Text = "";
+
+ switch (language)
+ {
+ case Define.E_LanguageID.Korean:
+ #region 한글
+ switch (code)
+ {
+ case 14:
+ this.smartGroupBox1.Text = "Error 04_14";
+ this.labelMessage1.Text = string.Format("비밀번호 {0}회 오류입니다", num1);
+ this.labelMessage2.Text = string.Format("{0}회 오류 시, 계정이 잠금처리됩니다.", num2);
+ break;
+ default:
+ this.smartGroupBox1.Text = "Error 04_99";
+ this.labelMessage1.Text = "제조사에 문의하세요";
+ break;
+ }
+ #endregion
+ break;
+ case Define.E_LanguageID.English:
+ #region 영문
+ switch (code)
+ {
+ case 14:
+ this.smartGroupBox1.Text = "Error 04_14";
+ this.labelMessage1.Text = string.Format("Password error {0} times.", num1);
+ this.labelMessage2.Text = string.Format("If there are {0} errors, your account will be locked.", num2);
+ break;
+ default:
+ this.smartGroupBox1.Text = "Error 04_99";
+ this.labelMessage1.Text = "Please contact a manufacturer";
+ break;
+ }
+ #endregion
+ break;
+ default:
+ break;
+ }
+ }
public DialogFormMessage(object dll, int code, Define.E_LanguageID language)
{
InitializeComponent();
@@ -484,83 +530,88 @@ namespace INT_PT002.DialogForms
switch (code)
{
case 1:
- this.smartGroupBox1.Text = "Error 01";
+ this.smartGroupBox1.Text = "Error 04_01";
this.labelMessage1.Text = "ID를 찾을 수 없습니다";
break;
case 2:
- this.smartGroupBox1.Text = "Error 02";
+ this.smartGroupBox1.Text = "Error 04_02";
this.labelMessage1.Text = "ID : 동일한 ID가 있습니다";
break;
case 3:
- this.smartGroupBox1.Text = "Error 03";
+ this.smartGroupBox1.Text = "Error 04_03";
this.labelMessage1.Text = "ID : 6~20자 입력하세요";
break;
case 4:
- this.smartGroupBox1.Text = "Error 04";
+ this.smartGroupBox1.Text = "Error 04_04";
this.labelMessage1.Text = "ID : 6~20자 입력하세요";
break;
case 5:
- this.smartGroupBox1.Text = "Error 05";
+ this.smartGroupBox1.Text = "Error 04_05";
this.labelMessage1.Text = "ID : 연속된 문자(123,321,abc,cba...)또는";
this.labelMessage2.Text = "동일한 문자(111,222,aaa...) 사용 할 수 없습니다";
break;
case 6:
- this.smartGroupBox1.Text = "Error 06";
+ this.smartGroupBox1.Text = "Error 04_06";
this.labelMessage1.Text = "ID : 사용할 수 없는 문자가 포함되어 있습니다";
break;
case 7:
- this.smartGroupBox1.Text = "Error 07";
+ this.smartGroupBox1.Text = "Error 04_07";
this.labelMessage1.Text = "ID : 사용자 계정이 만료 되었습니다";
break;
case 8:
- this.smartGroupBox1.Text = "Error 08";
+ this.smartGroupBox1.Text = "Error 04_08";
this.labelMessage1.Text = "PASSWORD : 이전 패스워드 입니다";
break;
case 9:
- this.smartGroupBox1.Text = "Error 09";
+ this.smartGroupBox1.Text = "Error 04_09";
this.labelMessage1.Text = "PASSWORD : 6~20자 입력하세요";
break;
case 10:
- this.smartGroupBox1.Text = "Error 10";
+ this.smartGroupBox1.Text = "Error 04_10";
this.labelMessage1.Text = "PASSWORD : 6~20자 입력하세요";
break;
case 11:
- this.smartGroupBox1.Text = "Error 11";
+ this.smartGroupBox1.Text = "Error 04_11";
this.labelMessage1.Text = "PASSWORD : 연속된 문자(123,321,abc,cba...)또는";
this.labelMessage2.Text = "동일한 문자(111,222,aaa...) 사용 할 수 없습니다";
break;
case 12:
- this.smartGroupBox1.Text = "Error 12";
+ this.smartGroupBox1.Text = "Error 04_12";
this.labelMessage1.Text = "PASSWORD : 사용할 수 없는 문자가 포함되어 있습니다";
this.labelMessage2.Text = "사용 가능 특수문자 : !@#$%^&*+-.";
break;
case 13:
- this.smartGroupBox1.Text = "Error 13";
+ this.smartGroupBox1.Text = "Error 04_13";
this.labelMessage1.Text = "PASSWORD : 영문1이상, 숫자1이상, 특수문자1이상";
this.labelMessage2.Text = "포함하여 주십시오";
break;
case 14:
- this.smartGroupBox1.Text = "Error 14";
+ this.smartGroupBox1.Text = "Error 04_14";
this.labelMessage1.Text = "비밀번호를 확인하세요";
break;
case 15:
- this.smartGroupBox1.Text = "Error 15";
+ this.smartGroupBox1.Text = "Error 04_15";
this.labelMessage1.Text = "PASSWORD : 비밀번호가 만료 되었습니다";
break;
case 16:
- this.smartGroupBox1.Text = "Error 16";
+ this.smartGroupBox1.Text = "Error 04_16";
this.labelMessage1.Text = "필수 설정 항목을 설정해 주십시오";
break;
case 17:
- this.smartGroupBox1.Text = "Error 17";
+ this.smartGroupBox1.Text = "Error 04_17";
this.labelMessage1.Text = "";
break;
case 18:
- this.smartGroupBox1.Text = "Error 18";
+ this.smartGroupBox1.Text = "Error 04_18";
this.labelMessage1.Text = "";
break;
+ case 19:
+ this.smartGroupBox1.Text = "Error 04_19";
+ this.labelMessage1.Text = "계정이 잠금처리 되었습니다.";
+ this.labelMessage2.Text = "관리자에게 문의하세요.";
+ break;
default:
- this.smartGroupBox1.Text = "Error 99";
+ this.smartGroupBox1.Text = "Error 04_99";
this.labelMessage1.Text = "제조사에 문의하세요";
break;
}
@@ -571,83 +622,88 @@ namespace INT_PT002.DialogForms
switch (code)
{
case 1:
- this.smartGroupBox1.Text = "Error 01";
+ this.smartGroupBox1.Text = "Error 04_01";
this.labelMessage1.Text = "ID not found";
break;
case 2:
- this.smartGroupBox1.Text = "Error 02";
+ this.smartGroupBox1.Text = "Error 04_02";
this.labelMessage1.Text = "ID : ID already exists";
break;
case 3:
- this.smartGroupBox1.Text = "Error 03";
+ this.smartGroupBox1.Text = "Error 04_03";
this.labelMessage1.Text = "ID : Please enter 6~20 characters";
break;
case 4:
- this.smartGroupBox1.Text = "Error 04";
+ this.smartGroupBox1.Text = "Error 04_04";
this.labelMessage1.Text = "ID : Please enter 6~20 characters";
break;
case 5:
- this.smartGroupBox1.Text = "Error 05";
+ this.smartGroupBox1.Text = "Error 04_05";
this.labelMessage1.Text = "ID : Consecutive(123,321,abc,cba...) or";
this.labelMessage2.Text = "identical(111,222,aaa...) characters cannot be used.";
break;
case 6:
- this.smartGroupBox1.Text = "Error 06";
+ this.smartGroupBox1.Text = "Error 04_06";
this.labelMessage1.Text = "ID : Contains invalid characters";
break;
case 7:
- this.smartGroupBox1.Text = "Error 07";
+ this.smartGroupBox1.Text = "Error 04_07";
this.labelMessage1.Text = "ID : User account has expired";
break;
case 8:
- this.smartGroupBox1.Text = "Error 08";
+ this.smartGroupBox1.Text = "Error 04_08";
this.labelMessage1.Text = "PASSWORD : This is the old password";
break;
case 9:
- this.smartGroupBox1.Text = "Error 09";
+ this.smartGroupBox1.Text = "Error 04_09";
this.labelMessage1.Text = "PASSWORD : Please enter 6~20 characters";
break;
case 10:
- this.smartGroupBox1.Text = "Error 10";
+ this.smartGroupBox1.Text = "Error 04_10";
this.labelMessage1.Text = "PASSWORD : Please enter 6~20 characters";
break;
case 11:
- this.smartGroupBox1.Text = "Error 11";
+ this.smartGroupBox1.Text = "Error 04_11";
this.labelMessage1.Text = "PASSWORD : Consecutive(123,321,abc,cba...) or";
this.labelMessage2.Text = "identical(111,222,aaa...) characters cannot be used.";
break;
case 12:
- this.smartGroupBox1.Text = "Error 12";
+ this.smartGroupBox1.Text = "Error 04_12";
this.labelMessage1.Text = "PASSWORD : Contains invalid characters";
this.labelMessage2.Text = "Special characters allowed : !@#$%^&*+-.";
break;
case 13:
- this.smartGroupBox1.Text = "Error 13";
+ this.smartGroupBox1.Text = "Error 04_13";
this.labelMessage1.Text = "PASSWORD : Please include at least one English letter,";
this.labelMessage2.Text = "at least one number, and at least one special character";
break;
case 14:
- this.smartGroupBox1.Text = "Error 14";
+ this.smartGroupBox1.Text = "Error 04_14";
this.labelMessage1.Text = "Check your password";
break;
case 15:
- this.smartGroupBox1.Text = "Error 15";
+ this.smartGroupBox1.Text = "Error 04_15";
this.labelMessage1.Text = "PASSWORD : Password has expired";
break;
case 16:
- this.smartGroupBox1.Text = "Error 16";
+ this.smartGroupBox1.Text = "Error 04_16";
this.labelMessage1.Text = "Please set the required setting items";
break;
case 17:
- this.smartGroupBox1.Text = "Error 17";
+ this.smartGroupBox1.Text = "Error 04_17";
this.labelMessage1.Text = "";
break;
case 18:
- this.smartGroupBox1.Text = "Error 18";
+ this.smartGroupBox1.Text = "Error 04_18";
this.labelMessage1.Text = "";
break;
+ case 19:
+ this.smartGroupBox1.Text = "Error 04_19";
+ this.labelMessage1.Text = "Your account has been locked.";
+ this.labelMessage2.Text = "Please contact your administrator.";
+ break;
default:
- this.smartGroupBox1.Text = "Error 99";
+ this.smartGroupBox1.Text = "Error 04_99";
this.labelMessage1.Text = "Please contact a manufacturer";
break;
}
diff --git a/INT_PT002/DialogForms/DialogFormYesNo.cs b/INT_PT002/DialogForms/DialogFormYesNo.cs
index 564a00d..bfa9a37 100644
--- a/INT_PT002/DialogForms/DialogFormYesNo.cs
+++ b/INT_PT002/DialogForms/DialogFormYesNo.cs
@@ -107,6 +107,11 @@ namespace INT_PT002.DialogForms
this.smartGroupBox1.Text = "유저설정";
this.labelMessage1.Text = "신규 유저 등록 하시겠습니까?";
break;
+ case 18:
+ this.smartGroupBox1.Text = "Login";
+ this.labelMessage1.Text = "비밀번호를 초기화 하시겠습니까?";
+ this.labelMessage2.Text = "";
+ break;
default:
break;
}
@@ -188,6 +193,11 @@ namespace INT_PT002.DialogForms
this.smartGroupBox1.Text = "User Setting";
this.labelMessage1.Text = "Do you want to register the new user?";
break;
+ case 18:
+ this.smartGroupBox1.Text = "Login";
+ this.labelMessage1.Text = "Do you want to reset your password?";
+ this.labelMessage2.Text = "";
+ break;
default:
break;
}
diff --git a/INT_PT002/Forms/FormMain.Designer.cs b/INT_PT002/Forms/FormMain.Designer.cs
index 1e8d108..94b8ba0 100644
--- a/INT_PT002/Forms/FormMain.Designer.cs
+++ b/INT_PT002/Forms/FormMain.Designer.cs
@@ -37,6 +37,8 @@
this.timerUserList = new System.Windows.Forms.Timer();
this.smartConfigs = new SmartX.SmartConfigs();
this.smartModbus = new SmartX.SmartModbus();
+ this.smartTCPMultiServer = new SmartX.SmartTCPMultiServer(this.components);
+ this.timerClientTryConnect = new System.Windows.Forms.Timer();
this.SuspendLayout();
//
// smartForm1
@@ -101,6 +103,18 @@
this.smartModbus.SlaveAddress = 1;
this.smartModbus.StopBits = System.IO.Ports.StopBits.One;
//
+ // smartTCPMultiServer
+ //
+ this.smartTCPMultiServer.MaxClient = 10;
+ this.smartTCPMultiServer.MaxReceiveBufferSize = 1000;
+ this.smartTCPMultiServer.Port = 0;
+ this.smartTCPMultiServer.ReceiveTimeout = 3000;
+ this.smartTCPMultiServer.SendCallBackType = SmartX.SmartTCPMultiServer.CALLBACKTYPE.Sync;
+ //
+ // timerClientTryConnect
+ //
+ this.timerClientTryConnect.Interval = 2000;
+ //
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -122,8 +136,10 @@
private SmartX.SmartFile smartFileCommunicationLog;
private SmartX.SmartFile smartFileIO;
private System.Windows.Forms.Timer timerUserList;
- private SmartX.SmartConfigs smartConfigs;
private SmartX.SmartModbus smartModbus;
+ private System.Windows.Forms.Timer timerClientTryConnect;
+ public SmartX.SmartConfigs smartConfigs;
+ public SmartX.SmartTCPMultiServer smartTCPMultiServer;
}
}
\ No newline at end of file
diff --git a/INT_PT002/Forms/FormMain.cs b/INT_PT002/Forms/FormMain.cs
index 6f1e069..a44e5ac 100644
--- a/INT_PT002/Forms/FormMain.cs
+++ b/INT_PT002/Forms/FormMain.cs
@@ -14,6 +14,8 @@ using SmartX;
using INT_PT002.DataStore;
using INT_PT002.Part11_UserManager;
using INT_PT002.DialogForms;
+using System.Net.Sockets;
+using InModbus;
namespace INT_PT002.Forms
{
@@ -73,6 +75,30 @@ namespace INT_PT002.Forms
// 알람
private AlarmList CurrentAlarmList;
+ // Modbus
+ public Modbus Modbus;
+
+ // Ethernet
+ private bool IsEthernetThreadStop;
+ private bool IsEthernetTransferData;
+
+ public object EthernetTransferData;
+
+ private TcpClient EthernetTcpClient;
+
+ private NetworkStream EthernetNetStream;
+ private StreamReader EthernetStmReader;
+ private StreamWriter EthernetStmWriter;
+
+ private delegate void TransferByteArrayDataCallback(byte[] byteArray);
+ private delegate void TransferStringDataCallback(string strText);
+ private delegate void TransferByteDataCallback(byte byteText);
+ private delegate void TextStatusCallback(string strText);
+ private delegate void UIControlCallback(bool bEnable);
+ private delegate void UIServerStatusCallback(bool bEnable);
+ private delegate void UITimerWorkCallback(bool bEnable);
+ private delegate void TimerTryConnectCallback(bool bEnable);
+
// Form
public FormMainDisplay3 ChildFormMainDisplay;
public FormMenu ChildFormMenu;
@@ -185,6 +211,8 @@ namespace INT_PT002.Forms
this.PathDataInspectionFolder = this.PathDataFolder + "Inspection\\";
this.PathDataAlarmFolder = this.PathDataFolder + "Alarm\\";
+ this.Modbus = new Modbus();
+
this.ColorLogOff = Color.Red;
this.ColorLogOn = Color.FromArgb(39, 200, 64);
@@ -247,7 +275,6 @@ namespace INT_PT002.Forms
private void CreateForm()
{
this.ChildFormMainDisplay = new FormMainDisplay3(this);
-
this.ChildFormMenu = new FormMenu(this);
this.smartForm1.MainForm = this;
@@ -435,6 +462,16 @@ namespace INT_PT002.Forms
structItem.SB_DATA_MODE = this.SystemConfig.SB_DATA_MODE;
structItem.SB_DATA_PERIOD = this.SystemConfig.SB_DATA_PERIOD;
+ structItem.AUTOMATIC_LOGOUT = this.SystemConfig.AUTOMATIC_LOGOUT;
+ structItem.NUMBER_OF_LOGIN_FAILURE = this.SystemConfig.NUMBER_OF_LOGIN_FAILURE;
+
+ structItem.ETHERNET_COMM_MODE = this.SystemConfig.ETHERNET_COMM_MODE;
+ structItem.ETHERNET_OP_MODE = this.SystemConfig.ETHERNET_OP_MODE;
+ structItem.ETHERNET_LOCAL_PORT = this.SystemConfig.ETHERNET_LOCAL_PORT;
+ structItem.ETHERNET_SERVER_PORT = this.SystemConfig.ETHERNET_SERVER_PORT;
+ structItem.MODBUS_TCP_SELECTFUNCTION = this.SystemConfig.MODBUS_TCP_SELECTFUNCTION;
+ structItem.MODBUS_TCP_START_ADDRESS = this.SystemConfig.MODBUS_TCP_START_ADDRESS;
+
structItem.EQUIPMENT_LANE = this.SystemConfig.EQUIPMENT_LANE;
structItem.CHECK_LANE = this.SystemConfig.CHECK_LANE;
@@ -444,6 +481,36 @@ namespace INT_PT002.Forms
structItem.LEVEL2_NAME = this.SystemConfig.LEVEL2_NAME;
structItem.LEVEL3_NAME = this.SystemConfig.LEVEL3_NAME;
+ structItem.ETHERNET_SERVER_IP = this.SystemConfig.ETHERNET_SERVER_IP;
+
+ structItem.DummyBool1 = false;
+ structItem.DummyBool2 = false;
+ structItem.DummyBool3 = false;
+ structItem.DummyBool4 = false;
+ structItem.DummyBool5 = false;
+ structItem.DummyBool6 = false;
+ structItem.DummyBool7 = false;
+ structItem.DummyBool8 = false;
+ structItem.DummyBool9 = false;
+ structItem.DummyBool10 = false;
+
+ structItem.DummyInt1 = 0;
+ structItem.DummyInt2 = 0;
+ structItem.DummyInt3 = 0;
+ structItem.DummyInt4 = 0;
+ structItem.DummyInt5 = 0;
+ structItem.DummyInt6 = 0;
+ structItem.DummyInt7 = 0;
+ structItem.DummyInt8 = 0;
+ structItem.DummyInt9 = 0;
+ structItem.DummyInt10 = 0;
+
+ structItem.DummyString1 = "";
+ structItem.DummyString2 = "";
+ structItem.DummyString3 = "";
+ structItem.DummyString4 = "";
+ structItem.DummyString5 = "";
+
this.smartFileIO.StructType.Write(structItem, 0, SmartFile.WriteMode.Overwrite);
}
public void SaveSystemConfigurationFile(SystemConfiguration item)
@@ -487,6 +554,16 @@ namespace INT_PT002.Forms
structItem.SB_DATA_MODE = item.SB_DATA_MODE;
structItem.SB_DATA_PERIOD = item.SB_DATA_PERIOD;
+ structItem.AUTOMATIC_LOGOUT = item.AUTOMATIC_LOGOUT;
+ structItem.NUMBER_OF_LOGIN_FAILURE = item.NUMBER_OF_LOGIN_FAILURE;
+
+ structItem.ETHERNET_COMM_MODE = item.ETHERNET_COMM_MODE;
+ structItem.ETHERNET_OP_MODE = item.ETHERNET_OP_MODE;
+ structItem.ETHERNET_LOCAL_PORT = item.ETHERNET_LOCAL_PORT;
+ structItem.ETHERNET_SERVER_PORT = item.ETHERNET_SERVER_PORT;
+ structItem.MODBUS_TCP_SELECTFUNCTION = item.MODBUS_TCP_SELECTFUNCTION;
+ structItem.MODBUS_TCP_START_ADDRESS = item.MODBUS_TCP_START_ADDRESS;
+
structItem.EQUIPMENT_LANE = item.EQUIPMENT_LANE;
structItem.CHECK_LANE = item.CHECK_LANE;
@@ -496,6 +573,36 @@ namespace INT_PT002.Forms
structItem.LEVEL2_NAME = item.LEVEL2_NAME;
structItem.LEVEL3_NAME = item.LEVEL3_NAME;
+ structItem.ETHERNET_SERVER_IP = item.ETHERNET_SERVER_IP;
+
+ structItem.DummyBool1 = false;
+ structItem.DummyBool2 = false;
+ structItem.DummyBool3 = false;
+ structItem.DummyBool4 = false;
+ structItem.DummyBool5 = false;
+ structItem.DummyBool6 = false;
+ structItem.DummyBool7 = false;
+ structItem.DummyBool8 = false;
+ structItem.DummyBool9 = false;
+ structItem.DummyBool10 = false;
+
+ structItem.DummyInt1 = 0;
+ structItem.DummyInt2 = 0;
+ structItem.DummyInt3 = 0;
+ structItem.DummyInt4 = 0;
+ structItem.DummyInt5 = 0;
+ structItem.DummyInt6 = 0;
+ structItem.DummyInt7 = 0;
+ structItem.DummyInt8 = 0;
+ structItem.DummyInt9 = 0;
+ structItem.DummyInt10 = 0;
+
+ structItem.DummyString1 = "";
+ structItem.DummyString2 = "";
+ structItem.DummyString3 = "";
+ structItem.DummyString4 = "";
+ structItem.DummyString5 = "";
+
this.smartFileIO.StructType.Write(structItem, 0, SmartFile.WriteMode.Overwrite);
this.smartFileIO.Close();
}
@@ -542,6 +649,13 @@ namespace INT_PT002.Forms
this.SystemConfig.SB_DATA_MODE = structItem.SB_DATA_MODE;
this.SystemConfig.SB_DATA_PERIOD = structItem.SB_DATA_PERIOD;
+ this.SystemConfig.ETHERNET_COMM_MODE = structItem.ETHERNET_COMM_MODE;
+ this.SystemConfig.ETHERNET_OP_MODE = structItem.ETHERNET_OP_MODE;
+ this.SystemConfig.ETHERNET_LOCAL_PORT = structItem.ETHERNET_LOCAL_PORT;
+ this.SystemConfig.ETHERNET_SERVER_PORT = structItem.ETHERNET_SERVER_PORT;
+ this.SystemConfig.MODBUS_TCP_SELECTFUNCTION = structItem.MODBUS_TCP_SELECTFUNCTION;
+ this.SystemConfig.MODBUS_TCP_START_ADDRESS = structItem.MODBUS_TCP_START_ADDRESS;
+
this.SystemConfig.EQUIPMENT_LANE = structItem.EQUIPMENT_LANE;
this.SystemConfig.CHECK_LANE = structItem.CHECK_LANE;
@@ -551,6 +665,8 @@ namespace INT_PT002.Forms
this.SystemConfig.LEVEL2_NAME = structItem.LEVEL2_NAME;
this.SystemConfig.LEVEL3_NAME = structItem.LEVEL3_NAME;
+ this.SystemConfig.ETHERNET_SERVER_IP = structItem.ETHERNET_SERVER_IP;
+
this.smartFileIO.Close();
}
#endregion
@@ -2120,6 +2236,314 @@ namespace INT_PT002.Forms
}
#endregion
+ #region Communication protocol
+ public byte[] Transfer_1_Modbus_Write()
+ {
+ byte[] madeData = new byte[10];
+ byte[] Length4Value = new byte[4];
+
+ return madeData;
+ }
+ private byte[] Transfer_1_Modbus_Read_TCP(byte[] readByte)
+ {
+ byte[] startAddressByte = new byte[2] { readByte[8], readByte[9] };
+ byte[] numberOfRegisterByte = new byte[2] { readByte[10], readByte[11] };
+ int startAddressInt;
+ int numberOfRegisterInt;
+ int madeDataIndex = 0;
+ byte[] length2Value = new byte[2];
+ byte[] length4Value = new byte[4];
+
+ startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte);
+ numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte);
+
+ byte[] madeData = new byte[numberOfRegisterInt * 2];
+
+ if (readByte[7] == ModbusFunctionCode.FunctionCode_04)
+ {
+ }
+
+ return madeData;
+ }
+ #endregion
+
+ #region Ethernet
+
+ #region Client
+ public void EthernetClientConnect()
+ {
+ if (this.IsEthernetThreadStop == false)
+ return; // Online 경우
+ if (this.SystemConfig.IsEthernetEnable == false)
+ {
+ this.TextStatusOut("Thread Error");
+ }
+ }
+ public void EthernetClientDisconnect()
+ {
+ this.DelegateUISeverStatus(false);
+ if (null != this.EthernetStmReader)
+ this.EthernetStmReader.Close();
+
+ if (null != this.EthernetStmWriter)
+ this.EthernetStmWriter.Close();
+
+ if (null != this.EthernetNetStream)
+ this.EthernetNetStream.Close();
+
+ if (null != this.EthernetTcpClient)
+ this.EthernetTcpClient.Close();
+
+ this.IsEthernetThreadStop = true;
+ this.DelegateTextStatusOut(">Disconnected");
+ this.SetTrackingHistoryData(Define.E_TrackingOperation.ClientDisconnect, "");
+
+ //---------------------
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+ //---------------------
+
+ if (this.CurrentSystemStatus.EquipmentStatus == Define.E_EquipmentStatus.Start
+ && this.CurrentSystemStatus.CurrentDisplayMode == Define.E_DisplayModeStore.MainDisplay)
+ this.DelegateTimerTryConnect(true);
+ }
+
+ private void EthernetClientReceiveThread()
+ {
+ int nConnectPort = Convert.ToInt32(this.SystemConfig.ETHERNET_SERVER_PORT);
+ try
+ {
+ this.DelegateTextStatusOut(">Now Connecting..");
+ this.EthernetTcpClient = new TcpClient(this.SystemConfig.ETHERNET_SERVER_IP, nConnectPort);
+
+ this.EthernetNetStream = this.EthernetTcpClient.GetStream();
+ this.EthernetStmReader = new StreamReader(this.EthernetNetStream);
+ this.EthernetStmWriter = new StreamWriter(this.EthernetNetStream);
+
+ this.DelegateUISeverStatus(true);
+ this.DelegateTextStatusOut(">Connected Server");
+ this.SetTrackingHistoryData(Define.E_TrackingOperation.ClientConnect, "");
+
+ this.IsEthernetThreadStop = false;
+
+ // 판정 데이터 전송
+ if (this.IsEthernetTransferData == true)
+ {
+ this.IsEthernetTransferData = false;
+ Type type = this.EthernetTransferData.GetType();
+ if (type == typeof(string))
+ this.DelegateTransferData((string)this.EthernetTransferData);
+ else if (type == typeof(byte[]))
+ this.DelegateTransferData((byte[])this.EthernetTransferData);
+ else if (type == typeof(byte))
+ this.DelegateTransferData((byte)this.EthernetTransferData);
+ }
+
+ char[] charArray = new char[20];
+
+ while (this.IsEthernetThreadStop == false)
+ {
+ var strRecDataCount = this.EthernetStmReader.Read(charArray, 0, charArray.Length);
+ var strRecData = new string(charArray, 0, strRecDataCount);
+
+ //Console.Write("\n" + string.Format("EthernetStmReader.Read {0:yyyy-MM-dd HH:mm:ss}: {1}", DateTime.Now, strRecData));
+
+ if (null == strRecData)
+ {
+ this.DelegateTextStatusOut(">Server Out");
+ this.IsEthernetThreadStop = true;
+ break;
+ }
+
+ this.DelegateTextStatusOut(strRecData);
+ }
+ }
+ catch
+ {
+ this.DelegateTextStatusOut(">Connect Fail !");
+ }
+ finally
+ {
+ this.EthernetClientDisconnect();
+ }
+
+ return;
+ }
+
+ private void UIServerStatus(bool status)
+ {
+ this.ChildFormMainDisplay.UpdateEthernetStatusDisplay(status);
+ }
+ public void DelegateUISeverStatus(bool status)
+ {
+ this.Invoke(new UIServerStatusCallback(this.UIServerStatus), status);
+ }
+
+ private void TextStatusOut(string value)
+ {
+ if (this.ChildFormMenu.Child_System_Ethernet != null)
+ this.ChildFormMenu.Child_System_Ethernet.UpdateEthernetStatusDisplay(value);
+ }
+ private void DelegateTextStatusOut(string value)
+ {
+ this.Invoke(new TextStatusCallback(this.TextStatusOut), value);
+ }
+
+ private void TimerTryConnect(bool status)
+ {
+ this.timerClientTryConnect.Enabled = status;
+ }
+ private void DelegateTimerTryConnect(bool status)
+ {
+ this.Invoke(new TimerTryConnectCallback(this.TimerTryConnect), status);
+ }
+
+ private void DelegateTransferData(string data)
+ {
+ this.Invoke(new TransferStringDataCallback(this.EthernetSendMessage), data);
+ }
+ private void DelegateTransferData(byte[] data)
+ {
+ this.Invoke(new TransferByteArrayDataCallback(this.EthernetSendMessage), data);
+ }
+ private void DelegateTransferData(byte data)
+ {
+ this.Invoke(new TransferByteDataCallback(this.EthernetSendMessage), data);
+ }
+ public void EthernetSendMessage(string msg)
+ {
+ try
+ {
+ this.EthernetStmWriter.Write(msg);
+ this.EthernetStmWriter.Flush();
+ }
+ catch
+ {
+ this.DelegateUISeverStatus(false);
+ this.DelegateTextStatusOut("> Disconnect");
+ }
+ }
+ public void EthernetSendMessage(byte[] msg)
+ {
+ try
+ {
+ this.EthernetStmWriter.BaseStream.Write(msg, 0, msg.Length);
+ this.EthernetStmWriter.Flush();
+ }
+ catch
+ {
+ this.DelegateUISeverStatus(false);
+ this.DelegateTextStatusOut("> Disconnect");
+ }
+ }
+ public void EthernetSendMessage(byte msg)
+ {
+ try
+ {
+ this.EthernetStmWriter.Write(msg);
+ this.EthernetStmWriter.Flush();
+ }
+ catch
+ {
+ this.DelegateUISeverStatus(false);
+ this.DelegateTextStatusOut("> Disconnect");
+ }
+ }
+ public void EthernetWeightData(string strTemp)
+ {
+ this.IsEthernetTransferData = true;
+ this.EthernetTransferData = strTemp;
+
+ if (this.IsEthernetThreadStop == true)
+ this.EthernetClientConnect();
+ else
+ this.EthernetSendMessage((string)this.EthernetTransferData);
+ }
+ public void EthernetWeightData(byte[] bytes)
+ {
+ this.IsEthernetTransferData = true;
+ this.EthernetTransferData = bytes;
+
+ if (this.IsEthernetThreadStop == true)
+ this.EthernetClientConnect();
+ else
+ this.EthernetSendMessage(bytes);
+ }
+ public void EthernetWeightDataForModbus(byte[] bytes)
+ {
+ this.IsEthernetTransferData = true;
+ this.EthernetTransferData = bytes;
+
+ if (this.IsEthernetThreadStop == true)
+ this.EthernetClientConnect();
+ else
+ this.EthernetSendMessage(bytes);
+ }
+ #endregion
+
+ #region Server
+ public void EthernetServerStart()
+ {
+ if (this.smartTCPMultiServer.IsStart == false)
+ {
+ this.ChildFormMenu.Child_System_Ethernet.DisplayLabelLocalPort(false);
+ this.smartTCPMultiServer.Port = this.SystemConfig.ETHERNET_LOCAL_PORT;
+ this.smartTCPMultiServer.Start();
+ }
+ }
+ public void EthernetServerStop()
+ {
+ if (this.smartTCPMultiServer.IsStart == true)
+ {
+ this.ChildFormMenu.Child_System_Ethernet.DisplayLabelLocalPort(true);
+ this.smartTCPMultiServer.Stop();
+ this.SetTrackingHistoryData(Define.E_TrackingOperation.ServerOFF, "");
+ }
+ }
+ public void EthernetServerSendMessage(SmartTCPMultiServer.CLIENTSINFOS client, string msg)
+ {
+ if (this.smartTCPMultiServer.SendStringASCIIID(client.strID, msg) == true)
+ {
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.StringType.Write(string.Format("Ethernet Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, msg));
+ }
+ }
+ public void EthernetServerSendMessage(SmartTCPMultiServer.CLIENTSINFOS client, byte[] bytes)
+ {
+ if (this.smartTCPMultiServer.SendByteByClientID(client.strID, bytes) == true)
+ {
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.StringType.Write(string.Format("Ethernet Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, Encoding.Default.GetString(bytes, 0, bytes.Length)));
+ }
+ }
+ #endregion
+
+ #endregion
+
#region Backup
public List GetSeletedNodeList(TreeView tree)
{
@@ -2408,6 +2832,34 @@ namespace INT_PT002.Forms
this.TrackingHistoryData(data);
}
+ public void SetTrackingHistoryData(Define.E_TrackingOperation eventType, string detail, string loginID)
+ {
+ HistoryData data = new HistoryData();
+
+ data.Type = "Operation";
+ data.Time = DateTime.Now;
+ data.LoginID = loginID;
+ data.Event = eventType.ToString();
+ data.Detail = detail;
+ data.BeforeData = "";
+ data.AfterData = "";
+
+ this.TrackingHistoryData(data);
+ }
+ public void SetTrackingHistoryData(Define.E_TrackingAlarm eventType, string detail)
+ {
+ HistoryData data = new HistoryData();
+
+ data.Type = "Alarm";
+ data.Time = DateTime.Now;
+ data.LoginID = this.CurrentSystemStatus.CurrentUser.ID;
+ data.Event = eventType.ToString();
+ data.Detail = detail;
+ data.BeforeData = "";
+ data.AfterData = "";
+
+ this.TrackingHistoryData(data);
+ }
public void SetTrackingHistoryData(Define.E_TrackingParameter type, string detail, string before, string after)
{
HistoryData data = new HistoryData();
@@ -2527,7 +2979,7 @@ namespace INT_PT002.Forms
}
#endregion
#region Tracking Alarm data
- public void SetTrackingAlarmData(Define.E_Trackingalarm type, string detail)
+ public void SetTrackingAlarmData(Define.E_TrackingAlarm type, string detail)
{
HistoryData data = new HistoryData();
@@ -2655,7 +3107,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.IsMenuAlarmLog;
structItem.IsMenuInformation = item.IsMenuInformation;
- structItem.IsMenuStatus = item.IsMenuStatus;
+ structItem.IsMenuStatus = item.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2674,7 +3127,6 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
#endregion
this.smartFileIO.StructType.Write(structItem, i, SmartFile.WriteMode.Overwrite);
@@ -2695,6 +3147,7 @@ namespace INT_PT002.Forms
structItem.IsMenuAlarmList = true;
structItem.IsMenuInformation = true;
structItem.IsMenuStatus = true;
+ structItem.IsMenuEthernet = true;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2713,7 +3166,6 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
#endregion
this.smartFileIO.StructType.Write(structItem, i, SmartFile.WriteMode.Overwrite);
@@ -2750,7 +3202,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.Level1.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.Level1.IsMenuAlarmLog;
structItem.IsMenuInformation = item.Level1.IsMenuInformation;
- structItem.IsMenuStatus = item.Level1.IsMenuStatus;
+ structItem.IsMenuStatus = item.Level1.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.Level1.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2769,9 +3222,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f0_Level1, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Level1, SmartFile.WriteMode.Overwrite);
#endregion
#region Level2
@@ -2787,7 +3239,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.Level2.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.Level2.IsMenuAlarmLog;
structItem.IsMenuInformation = item.Level2.IsMenuInformation;
- structItem.IsMenuStatus = item.Level2.IsMenuStatus;
+ structItem.IsMenuStatus = item.Level2.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.Level2.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2806,9 +3259,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f1_Level2, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Level2, SmartFile.WriteMode.Overwrite);
#endregion
#region Level3
@@ -2824,7 +3276,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.Level3.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.Level3.IsMenuAlarmLog;
structItem.IsMenuInformation = item.Level3.IsMenuInformation;
- structItem.IsMenuStatus = item.Level3.IsMenuStatus;
+ structItem.IsMenuStatus = item.Level3.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.Level3.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2843,25 +3296,40 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f2_Level3, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Level3, SmartFile.WriteMode.Overwrite);
#endregion
#region Admin
- structItem.IsMainDisplayRecipeChange = item.Admin.IsMainDisplayProductChange;
- structItem.IsMainDisplayClear = item.Admin.IsMainDisplayClear;
- structItem.IsMainDispalySubMenu = item.Admin.IsMainDisplaySubMenu;
+ //structItem.IsMainDisplayRecipeChange = item.Admin.IsMainDisplayProductChange;
+ //structItem.IsMainDisplayClear = item.Admin.IsMainDisplayClear;
+ //structItem.IsMainDispalySubMenu = item.Admin.IsMainDisplaySubMenu;
- structItem.IsMenuRecipe = item.Admin.IsMenuRecipe;
- structItem.IsMenuUserSetting = item.Admin.IsMenuUserSetting;
- structItem.IsMenuUserGroupEditor = item.Admin.IsMenuUserGroupEditor;
- structItem.IsMenuIOTest = item.Admin.IsMenuIOTest;
- structItem.IsMenuEquipmentLog = item.Admin.IsMenuHistoryLog;
- structItem.IsMenuCheckLog = item.Admin.IsMenuInspectionLog;
- structItem.IsMenuAlarmList = item.Admin.IsMenuAlarmLog;
- structItem.IsMenuInformation = item.Admin.IsMenuInformation;
- structItem.IsMenuStatus = item.Admin.IsMenuStatus;
+ //structItem.IsMenuRecipe = item.Admin.IsMenuRecipe;
+ //structItem.IsMenuUserSetting = item.Admin.IsMenuUserSetting;
+ //structItem.IsMenuUserGroupEditor = item.Admin.IsMenuUserGroupEditor;
+ //structItem.IsMenuIOTest = item.Admin.IsMenuIOTest;
+ //structItem.IsMenuEquipmentLog = item.Admin.IsMenuHistoryLog;
+ //structItem.IsMenuCheckLog = item.Admin.IsMenuInspectionLog;
+ //structItem.IsMenuAlarmList = item.Admin.IsMenuAlarmLog;
+ //structItem.IsMenuInformation = item.Admin.IsMenuInformation;
+ //structItem.IsMenuStatus = item.Admin.IsMenuEquipment;
+ //structItem.IsMenuEthernet = item.Admin.IsMenuEthernet;
+
+ structItem.IsMainDisplayRecipeChange = true;
+ structItem.IsMainDisplayClear = true;
+ structItem.IsMainDispalySubMenu = true;
+
+ structItem.IsMenuRecipe = true;
+ structItem.IsMenuUserSetting = true;
+ structItem.IsMenuUserGroupEditor = true;
+ structItem.IsMenuIOTest = true;
+ structItem.IsMenuEquipmentLog = true;
+ structItem.IsMenuCheckLog = true;
+ structItem.IsMenuAlarmList = true;
+ structItem.IsMenuInformation = true;
+ structItem.IsMenuStatus = true;
+ structItem.IsMenuEthernet = true;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2880,9 +3348,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f3_Admin, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Admin, SmartFile.WriteMode.Overwrite);
#endregion
this.smartFileIO.Close();
@@ -2918,7 +3385,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.IsMenuAlarmLog;
structItem.IsMenuInformation = item.IsMenuInformation;
- structItem.IsMenuStatus = item.IsMenuStatus;
+ structItem.IsMenuStatus = item.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2937,9 +3405,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f0_Level1, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Level1, SmartFile.WriteMode.Overwrite);
#endregion
this.smartFileIO.Close();
@@ -2975,7 +3442,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.IsMenuAlarmLog;
structItem.IsMenuInformation = item.IsMenuInformation;
- structItem.IsMenuStatus = item.IsMenuStatus;
+ structItem.IsMenuStatus = item.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -2994,9 +3462,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f1_Level2, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Level2, SmartFile.WriteMode.Overwrite);
#endregion
this.smartFileIO.Close();
@@ -3032,7 +3499,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.IsMenuAlarmLog;
structItem.IsMenuInformation = item.IsMenuInformation;
- structItem.IsMenuStatus = item.IsMenuStatus;
+ structItem.IsMenuStatus = item.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -3051,9 +3519,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f2_Level3, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Level3, SmartFile.WriteMode.Overwrite);
#endregion
this.smartFileIO.Close();
@@ -3089,7 +3556,8 @@ namespace INT_PT002.Forms
structItem.IsMenuCheckLog = item.IsMenuInspectionLog;
structItem.IsMenuAlarmList = item.IsMenuAlarmLog;
structItem.IsMenuInformation = item.IsMenuInformation;
- structItem.IsMenuStatus = item.IsMenuStatus;
+ structItem.IsMenuStatus = item.IsMenuEquipment;
+ structItem.IsMenuEthernet = item.IsMenuEthernet;
structItem.Dummy1 = false;
structItem.Dummy2 = false;
@@ -3108,9 +3576,8 @@ namespace INT_PT002.Forms
structItem.Dummy15 = false;
structItem.Dummy16 = false;
structItem.Dummy17 = false;
- structItem.Dummy18 = false;
- this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.f3_Admin, SmartFile.WriteMode.Overwrite);
+ this.smartFileIO.StructType.Write(structItem, (int)Define.E_UserGroup.Admin, SmartFile.WriteMode.Overwrite);
#endregion
this.smartFileIO.Close();
@@ -3138,7 +3605,7 @@ namespace INT_PT002.Forms
this.smartFileIO.StructType.FillBuffer();
#region Level1
- structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.f0_Level1);
+ structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.Level1);
item.Level1.IsMainDisplayProductChange = structItem.IsMainDisplayRecipeChange;
item.Level1.IsMainDisplayClear = structItem.IsMainDisplayClear;
@@ -3152,11 +3619,12 @@ namespace INT_PT002.Forms
item.Level1.IsMenuInspectionLog = structItem.IsMenuCheckLog;
item.Level1.IsMenuAlarmLog = structItem.IsMenuAlarmList;
item.Level1.IsMenuInformation = structItem.IsMenuInformation;
- item.Level1.IsMenuStatus = structItem.IsMenuStatus;
+ item.Level1.IsMenuEquipment = structItem.IsMenuStatus;
+ item.Level1.IsMenuEthernet = structItem.IsMenuEthernet;
#endregion
#region Level2
- structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.f1_Level2);
+ structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.Level2);
item.Level2.IsMainDisplayProductChange = structItem.IsMainDisplayRecipeChange;
item.Level2.IsMainDisplayClear = structItem.IsMainDisplayClear;
@@ -3170,11 +3638,12 @@ namespace INT_PT002.Forms
item.Level2.IsMenuInspectionLog = structItem.IsMenuCheckLog;
item.Level2.IsMenuAlarmLog = structItem.IsMenuAlarmList;
item.Level2.IsMenuInformation = structItem.IsMenuInformation;
- item.Level2.IsMenuStatus = structItem.IsMenuStatus;
+ item.Level2.IsMenuEquipment = structItem.IsMenuStatus;
+ item.Level2.IsMenuEthernet = structItem.IsMenuEthernet;
#endregion
#region Level3
- structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.f2_Level3);
+ structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.Level3);
item.Level3.IsMainDisplayProductChange = structItem.IsMainDisplayRecipeChange;
item.Level3.IsMainDisplayClear = structItem.IsMainDisplayClear;
@@ -3188,25 +3657,42 @@ namespace INT_PT002.Forms
item.Level3.IsMenuInspectionLog = structItem.IsMenuCheckLog;
item.Level3.IsMenuAlarmLog = structItem.IsMenuAlarmList;
item.Level3.IsMenuInformation = structItem.IsMenuInformation;
- item.Level3.IsMenuStatus = structItem.IsMenuStatus;
+ item.Level3.IsMenuEquipment = structItem.IsMenuStatus;
+ item.Level3.IsMenuEthernet = structItem.IsMenuEthernet;
#endregion
#region Default
- structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.f3_Admin);
+ //structItem = (StructUserGroupItem)this.smartFileIO.StructType.ReadBuffer((int)Define.E_UserGroup.Admin);
- item.Admin.IsMainDisplayProductChange = structItem.IsMainDisplayRecipeChange;
- item.Admin.IsMainDisplayClear = structItem.IsMainDisplayClear;
- item.Admin.IsMainDisplaySubMenu = structItem.IsMainDispalySubMenu;
+ //item.Admin.IsMainDisplayProductChange = structItem.IsMainDisplayRecipeChange;
+ //item.Admin.IsMainDisplayClear = structItem.IsMainDisplayClear;
+ //item.Admin.IsMainDisplaySubMenu = structItem.IsMainDispalySubMenu;
- item.Admin.IsMenuRecipe = structItem.IsMenuRecipe;
- item.Admin.IsMenuUserSetting = structItem.IsMenuUserSetting;
- item.Admin.IsMenuUserGroupEditor = structItem.IsMenuUserGroupEditor;
- item.Admin.IsMenuIOTest = structItem.IsMenuIOTest;
- item.Admin.IsMenuHistoryLog = structItem.IsMenuEquipmentLog;
- item.Admin.IsMenuInspectionLog = structItem.IsMenuCheckLog;
- item.Admin.IsMenuAlarmLog = structItem.IsMenuAlarmList;
- item.Admin.IsMenuInformation = structItem.IsMenuInformation;
- item.Admin.IsMenuStatus = structItem.IsMenuStatus;
+ //item.Admin.IsMenuRecipe = structItem.IsMenuRecipe;
+ //item.Admin.IsMenuUserSetting = structItem.IsMenuUserSetting;
+ //item.Admin.IsMenuUserGroupEditor = structItem.IsMenuUserGroupEditor;
+ //item.Admin.IsMenuIOTest = structItem.IsMenuIOTest;
+ //item.Admin.IsMenuHistoryLog = structItem.IsMenuEquipmentLog;
+ //item.Admin.IsMenuInspectionLog = structItem.IsMenuCheckLog;
+ //item.Admin.IsMenuAlarmLog = structItem.IsMenuAlarmList;
+ //item.Admin.IsMenuInformation = structItem.IsMenuInformation;
+ //item.Admin.IsMenuEquipment = structItem.IsMenuStatus;
+ //item.Admin.IsMenuEthernet = structItem.IsMenuEthernet;
+
+ item.Admin.IsMainDisplayProductChange = true;
+ item.Admin.IsMainDisplayClear = true;
+ item.Admin.IsMainDisplaySubMenu = true;
+
+ item.Admin.IsMenuRecipe = true;
+ item.Admin.IsMenuUserSetting = true;
+ item.Admin.IsMenuUserGroupEditor = true;
+ item.Admin.IsMenuIOTest = true;
+ item.Admin.IsMenuHistoryLog = true;
+ item.Admin.IsMenuInspectionLog = true;
+ item.Admin.IsMenuAlarmLog = true;
+ item.Admin.IsMenuInformation = true;
+ item.Admin.IsMenuEquipment = true;
+ item.Admin.IsMenuEthernet = true;
#endregion
}
catch
@@ -3333,7 +3819,7 @@ namespace INT_PT002.Forms
this.LoadUserGroupFile(ref this.CurrentUserGroup);
// UserManager 초기화
this.InitializeUserManager();
- this.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.LogOff;
+ this.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut;
//UserManager.UserManager_GetUserListName();
// Form 생성
@@ -3386,7 +3872,7 @@ namespace INT_PT002.Forms
this.smartForm1.Show(1);
}
- private void CurrentAlarmList_Change(Define.E_Trackingalarm alarm, string status)
+ private void CurrentAlarmList_Change(Define.E_TrackingAlarm alarm, string status)
{
this.SetTrackingAlarmData(alarm, status);
}
@@ -3525,6 +4011,10 @@ namespace INT_PT002.Forms
UserManager.UserMgr_user_info_t user = (UserManager.UserMgr_user_info_t)data;
//this.ChildFormMenu.Child_User_UserEditor.CallBackUserListModifyInfoDataEvent(user);
+ if (this.CurrentSystemStatus.CurrentDisplayMode == Define.E_DisplayModeStore.MainDisplay)
+ this.ChildFormMainDisplay.CallBackUserListModifyInfoData(user);
+ else
+ this.ChildFormMenu.CallBackUserListModifyInfoData(user);
}
catch
{
@@ -3596,6 +4086,11 @@ namespace INT_PT002.Forms
}
}
#endregion
+
+ private void timerClientTryConnect_Tick(object sender, EventArgs e)
+ {
+
+ }
#endregion
}
}
\ No newline at end of file
diff --git a/INT_PT002/Forms/FormMain.resx b/INT_PT002/Forms/FormMain.resx
index 4ad9703..0b8c38c 100644
--- a/INT_PT002/Forms/FormMain.resx
+++ b/INT_PT002/Forms/FormMain.resx
@@ -227,6 +227,12 @@
750, 17
+
+ 879, 17
+
+
+ 1047, 17
+
WEBPAD
diff --git a/INT_PT002/Forms/FormMainDisplay.cs b/INT_PT002/Forms/FormMainDisplay.cs
index 608e39e..aac980d 100644
--- a/INT_PT002/Forms/FormMainDisplay.cs
+++ b/INT_PT002/Forms/FormMainDisplay.cs
@@ -66,7 +66,7 @@ namespace INT_PT002.Forms
private void Login()
{
- DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm);
+ DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, false, false);
if (logOn.ShowDialog() == DialogResult.OK)
{
this.DisplayRefresh();
@@ -83,7 +83,7 @@ namespace INT_PT002.Forms
}
public void Logout()
{
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.LogOff;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut;
this.buttonUser.ButtonUp();
this.DisplayRefresh();
diff --git a/INT_PT002/Forms/FormMainDisplay1.cs b/INT_PT002/Forms/FormMainDisplay1.cs
index a0968f5..2336bf3 100644
--- a/INT_PT002/Forms/FormMainDisplay1.cs
+++ b/INT_PT002/Forms/FormMainDisplay1.cs
@@ -265,7 +265,7 @@ namespace INT_PT002.Forms
private void Login()
{
- DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm);
+ DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, false, false);
if (logOn.ShowDialog() == DialogResult.OK)
{
this.DisplayRefresh();
@@ -282,7 +282,7 @@ namespace INT_PT002.Forms
}
public void Logout()
{
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.LogOff;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut;
this.buttonUser.ButtonUp();
this.DisplayRefresh();
diff --git a/INT_PT002/Forms/FormMainDisplay2.cs b/INT_PT002/Forms/FormMainDisplay2.cs
index 73e0cc0..e5fbf96 100644
--- a/INT_PT002/Forms/FormMainDisplay2.cs
+++ b/INT_PT002/Forms/FormMainDisplay2.cs
@@ -307,13 +307,13 @@ namespace INT_PT002.Forms
{
string id = "", group = "";
- switch (user.Status)
+ switch (user.Group)
{
- case Define.E_UserStatus.None:
+ case Define.E_UserGroup.None:
break;
- case Define.E_UserStatus.Level1:
+ case Define.E_UserGroup.Level1:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -324,9 +324,9 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Level2:
+ case Define.E_UserGroup.Level2:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -337,9 +337,9 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Level3:
+ case Define.E_UserGroup.Level3:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -350,9 +350,9 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Admin:
+ case Define.E_UserGroup.Admin:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -363,9 +363,9 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Developer:
+ case Define.E_UserGroup.Developer:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -376,7 +376,7 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.NotLogin:
+ case Define.E_UserGroup.NotLogin:
id = "";
group = "";
@@ -385,7 +385,7 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.LogOff:
+ case Define.E_UserGroup.LogOut:
id = "Log Off";
group = "-";
@@ -414,7 +414,7 @@ namespace INT_PT002.Forms
}
private void Login()
{
- DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm);
+ DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, false, false);
if (logOn.ShowDialog() == DialogResult.OK)
{
this.DisplayRefresh();
@@ -432,7 +432,7 @@ namespace INT_PT002.Forms
}
public void Logout()
{
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.LogOff;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut;
this.buttonUser.ButtonUp();
this.buttonUser.ButtonText = "Login";
this.DisplayRefresh();
@@ -885,7 +885,7 @@ namespace INT_PT002.Forms
}
private void buttonUser_Click(object sender, EventArgs e)
{
- if (this.ParentForm.CurrentSystemStatus.CurrentUser.Status == Define.E_UserStatus.LogOff)
+ if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.LogOut)
{
this.Login();
}
diff --git a/INT_PT002/Forms/FormMainDisplay3.Designer.cs b/INT_PT002/Forms/FormMainDisplay3.Designer.cs
index 16a2815..16c8e92 100644
--- a/INT_PT002/Forms/FormMainDisplay3.Designer.cs
+++ b/INT_PT002/Forms/FormMainDisplay3.Designer.cs
@@ -41,6 +41,11 @@
this.buttonProgress3 = new SmartX.SmartButton();
this.buttonProgress2 = new SmartX.SmartButton();
this.buttonProgress1 = new SmartX.SmartButton();
+ this.labelExpireOfPassword = new SmartX.SmartLabel();
+ this.buttonModbus = new SmartX.SmartButton();
+ this.pictureBoxEthernetDisconnection = new System.Windows.Forms.PictureBox();
+ this.pictureBoxEthernetConnection = new System.Windows.Forms.PictureBox();
+ this.pictureBoxEthernetDisable = new System.Windows.Forms.PictureBox();
this.smartLabel1 = new SmartX.SmartLabel();
this.progressBar1 = new SmartX.SmartProgressBar();
this.pictureBoxProgress3Selected = new System.Windows.Forms.PictureBox();
@@ -133,6 +138,7 @@
this.smartTimerMessageShow = new SmartX.SmartTimer();
this.smartTimerLogin = new SmartX.SmartTimer();
this.smartTimerProgressBar = new SmartX.SmartTimer();
+ this.timerServer = new SmartX.SmartTimer();
this.smartForm1.SuspendLayout();
this.smartGroupBox1.SuspendLayout();
this.SuspendLayout();
@@ -154,6 +160,11 @@
this.smartForm1.Controls.Add(this.buttonProgress3);
this.smartForm1.Controls.Add(this.buttonProgress2);
this.smartForm1.Controls.Add(this.buttonProgress1);
+ this.smartForm1.Controls.Add(this.labelExpireOfPassword);
+ this.smartForm1.Controls.Add(this.buttonModbus);
+ this.smartForm1.Controls.Add(this.pictureBoxEthernetDisconnection);
+ this.smartForm1.Controls.Add(this.pictureBoxEthernetConnection);
+ this.smartForm1.Controls.Add(this.pictureBoxEthernetDisable);
this.smartForm1.Controls.Add(this.smartLabel1);
this.smartForm1.Controls.Add(this.progressBar1);
this.smartForm1.Controls.Add(this.pictureBoxProgress3Selected);
@@ -639,6 +650,93 @@
this.buttonProgress1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
this.buttonProgress1.Click += new System.EventHandler(this.buttonProgress1_Click);
//
+ // labelExpireOfPassword
+ //
+ this.labelExpireOfPassword.BackGround = this.smartForm1;
+ this.labelExpireOfPassword.BackGroundColor = System.Drawing.Color.SkyBlue;
+ this.labelExpireOfPassword.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelExpireOfPassword.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelExpireOfPassword.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold);
+ this.labelExpireOfPassword.LineSpacing = 0F;
+ this.labelExpireOfPassword.Location = new System.Drawing.Point(786, 126);
+ this.labelExpireOfPassword.Name = "labelExpireOfPassword";
+ this.labelExpireOfPassword.OverlapOptimize = true;
+ this.labelExpireOfPassword.PasswordChar = '\0';
+ this.labelExpireOfPassword.Radius = 3;
+ this.labelExpireOfPassword.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelExpireOfPassword.Size = new System.Drawing.Size(100, 15);
+ this.labelExpireOfPassword.TabIndex = 424;
+ this.labelExpireOfPassword.Text = "ABCDEFG";
+ this.labelExpireOfPassword.TextColor = System.Drawing.Color.White;
+ this.labelExpireOfPassword.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelExpireOfPassword.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelExpireOfPassword.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelExpireOfPassword.Wordwrap = false;
+ //
+ // buttonModbus
+ //
+ this.buttonModbus.BackGround = this.smartForm1;
+ this.buttonModbus.BackGroundColor = System.Drawing.Color.Gray;
+ this.buttonModbus.ButtonColor = System.Drawing.Color.Teal;
+ this.buttonModbus.ButtonDownColor = System.Drawing.Color.DarkSlateGray;
+ this.buttonModbus.ButtonImageAutoSize = true;
+ this.buttonModbus.ButtonStyle = SmartX.SmartButton.ButtonStyles.FlatRound;
+ this.buttonModbus.ButtonText = "Modbus";
+ this.buttonModbus.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonModbus.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
+ this.buttonModbus.GroupID = 0;
+ this.buttonModbus.ImageDisable = null;
+ this.buttonModbus.ImageDown = null;
+ this.buttonModbus.ImageUp = null;
+ this.buttonModbus.Location = new System.Drawing.Point(917, 418);
+ this.buttonModbus.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL;
+ this.buttonModbus.Name = "buttonModbus";
+ this.buttonModbus.NestedClickEventPrevent = false;
+ this.buttonModbus.OutlinePixel = 2;
+ this.buttonModbus.OverlapOptimize = true;
+ this.buttonModbus.RepeatInterval = 200;
+ this.buttonModbus.RepeatIntervalAccelerate = null;
+ this.buttonModbus.RoundSize = 10;
+ this.buttonModbus.SafeInterval = 200;
+ this.buttonModbus.Size = new System.Drawing.Size(100, 60);
+ this.buttonModbus.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonModbus.TabIndex = 404;
+ this.buttonModbus.Text = null;
+ this.buttonModbus.TextColor = System.Drawing.Color.White;
+ this.buttonModbus.TextColorDisable = System.Drawing.Color.Gainsboro;
+ this.buttonModbus.TextDownColor = System.Drawing.Color.Chartreuse;
+ this.buttonModbus.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonModbus.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonModbus.Visible = false;
+ this.buttonModbus.Click += new System.EventHandler(this.buttonModbus_Click);
+ //
+ // pictureBoxEthernetDisconnection
+ //
+ this.pictureBoxEthernetDisconnection.BackColor = System.Drawing.Color.Black;
+ this.pictureBoxEthernetDisconnection.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxEthernetDisconnection.Image")));
+ this.pictureBoxEthernetDisconnection.Location = new System.Drawing.Point(151, 44);
+ this.pictureBoxEthernetDisconnection.Name = "pictureBoxEthernetDisconnection";
+ this.pictureBoxEthernetDisconnection.Size = new System.Drawing.Size(30, 25);
+ this.pictureBoxEthernetDisconnection.Visible = false;
+ //
+ // pictureBoxEthernetConnection
+ //
+ this.pictureBoxEthernetConnection.BackColor = System.Drawing.Color.Black;
+ this.pictureBoxEthernetConnection.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxEthernetConnection.Image")));
+ this.pictureBoxEthernetConnection.Location = new System.Drawing.Point(187, 44);
+ this.pictureBoxEthernetConnection.Name = "pictureBoxEthernetConnection";
+ this.pictureBoxEthernetConnection.Size = new System.Drawing.Size(30, 25);
+ this.pictureBoxEthernetConnection.Visible = false;
+ //
+ // pictureBoxEthernetDisable
+ //
+ this.pictureBoxEthernetDisable.BackColor = System.Drawing.Color.Black;
+ this.pictureBoxEthernetDisable.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxEthernetDisable.Image")));
+ this.pictureBoxEthernetDisable.Location = new System.Drawing.Point(151, 13);
+ this.pictureBoxEthernetDisable.Name = "pictureBoxEthernetDisable";
+ this.pictureBoxEthernetDisable.Size = new System.Drawing.Size(30, 25);
+ this.pictureBoxEthernetDisable.Visible = false;
+ //
// smartLabel1
//
this.smartLabel1.BackGround = this.smartForm1;
@@ -2686,6 +2784,15 @@
this.smartTimerProgressBar.TimeFormStringSeparator = ":";
this.smartTimerProgressBar.Tick += new System.EventHandler(this.smartTimerProgressBar_Tick);
//
+ // timerServer
+ //
+ this.timerServer.CounterMode = SmartX.SmartTimer.CounterModes.Up_Counter;
+ this.timerServer.Interval = 1000;
+ this.timerServer.IntervalSeries = null;
+ this.timerServer.TimeCount = ((long)(1000000));
+ this.timerServer.TimeFormStringSeparator = ":";
+ this.timerServer.Tick += new System.EventHandler(this.timerServer_Tick);
+ //
// FormMainDisplay3
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -2767,6 +2874,12 @@
private SmartX.SmartLabel labelResult6;
private SmartX.SmartLabel labelResult8;
private SmartX.SmartLabel labelResult7;
+ private SmartX.SmartTimer timerServer;
+ private System.Windows.Forms.PictureBox pictureBoxEthernetDisconnection;
+ private System.Windows.Forms.PictureBox pictureBoxEthernetConnection;
+ private System.Windows.Forms.PictureBox pictureBoxEthernetDisable;
+ private SmartX.SmartButton buttonModbus;
+ private SmartX.SmartLabel labelExpireOfPassword;
private SmartX.SmartLabel labelPressureMaster1;
private SmartX.SmartLabel labelPressureMaster2;
private SmartX.SmartLabel labelPressureMaster4;
diff --git a/INT_PT002/Forms/FormMainDisplay3.cs b/INT_PT002/Forms/FormMainDisplay3.cs
index eb85007..8fd0aba 100644
--- a/INT_PT002/Forms/FormMainDisplay3.cs
+++ b/INT_PT002/Forms/FormMainDisplay3.cs
@@ -20,6 +20,8 @@ namespace INT_PT002.Forms
public partial class FormMainDisplay3 : Form
{
#region Field
+ public string ChangeID;
+ private bool BeforeEthernetStatus;
private int FlagIgnoreCNT;
private string MessageBoxRange;
private int testIndex;
@@ -70,6 +72,7 @@ namespace INT_PT002.Forms
private void DefaultSetting()
{
int testIndex = 0;
+ this.BeforeEthernetStatus = false;
this.FlagIgnoreCNT = 0;
this.MessageBoxRange = "";
@@ -227,41 +230,47 @@ namespace INT_PT002.Forms
private void UpdateDisplayUser(UserItem user)
{
- string id = "", group = "";
+ string id = "", group = "", expireDate = "";
- switch (user.Status)
+ switch (user.Group)
{
- case Define.E_UserStatus.None:
+ case Define.E_UserGroup.None:
break;
- case Define.E_UserStatus.Level1:
+ case Define.E_UserGroup.Level1:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+ this.labelExpireOfPassword.Visible = true;
+
this.buttonUser.ButtonDown();
this.buttonRecipeNo.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsMainDisplayProductChange;
this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsMainDisplayClear;
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Level2:
+ case Define.E_UserGroup.Level2:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+ this.labelExpireOfPassword.Visible = true;
+
this.buttonUser.ButtonDown();
this.buttonRecipeNo.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsMainDisplayProductChange;
this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsMainDisplayClear;
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Level3:
+ case Define.E_UserGroup.Level3:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
+
+ this.labelExpireOfPassword.Visible = true;
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -272,9 +281,11 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Admin:
+ case Define.E_UserGroup.Admin:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
+
+ this.labelExpireOfPassword.Visible = false;
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -285,9 +296,11 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.Developer:
+ case Define.E_UserGroup.Developer:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
+
+ this.labelExpireOfPassword.Visible = true;
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
@@ -298,19 +311,23 @@ namespace INT_PT002.Forms
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.NotLogin:
+ case Define.E_UserGroup.NotLogin:
id = "";
group = "";
+ this.labelExpireOfPassword.Visible = false;
+
this.buttonRecipeNo.Enabled = true;
this.buttonClear.Enabled = true;
this.buttonInspection.Enabled = true;
this.buttonMenu.Enabled = true;
break;
- case Define.E_UserStatus.LogOff:
+ case Define.E_UserGroup.LogOut:
id = "Log Off";
group = "-";
+ this.labelExpireOfPassword.Visible = false;
+
if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOff)
this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOff;
@@ -329,6 +346,39 @@ namespace INT_PT002.Forms
this.buttonInspection.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonInspection.Enabled);
this.buttonMenu.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonMenu.Enabled);
+ expireDate = this.DisplayExpireOfPassword(user.Group);
+ if (expireDate != "-")
+ {
+ int intExpireDate = int.Parse(expireDate);
+
+ if (intExpireDate == 0)
+ {
+ this.labelExpireOfPassword.TextColor = this.ParentForm.ColorLogOff;
+ this.labelExpireOfPassword.Text = "D-0";
+ }
+ else if (intExpireDate < 0)
+ {
+ if (intExpireDate * -1 > this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword)
+ expireDate = "-" + (this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword - 1).ToString();
+
+ this.labelExpireOfPassword.Text = "D" + expireDate;
+ if (intExpireDate >= -10)
+ this.labelExpireOfPassword.TextColor = this.ParentForm.ColorLogOff;
+ else
+ this.labelExpireOfPassword.TextColor = this.ParentForm.ColorLogOn;
+ }
+ else
+ {
+ this.labelExpireOfPassword.TextColor = this.ParentForm.ColorLogOn;
+ this.labelExpireOfPassword.Text = "D+" + expireDate;
+ }
+ }
+ else
+ {
+ this.labelExpireOfPassword.TextColor = this.ParentForm.ColorLogOn;
+ this.labelExpireOfPassword.Text = "-";
+ }
+
if (this.labelUserLevel.Text != group)
this.labelUserLevel.Text = group;
if (this.labelUserID.Text != id)
@@ -336,16 +386,41 @@ namespace INT_PT002.Forms
}
private void Login()
{
- DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm);
- if (logOn.ShowDialog() == DialogResult.OK)
- {
- this.DisplayRefresh();
- this.buttonUser.ButtonDown();
- this.buttonUser.ButtonText = "Logout";
- //this.ParentForm.TimerAutomaticLogout(true, this.ParentForm.SystemConfig.AutomaticLogout);
+ int extract = 0;
+ DialogResult result;
- // Part 11
- this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "");
+ DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, false, false);
+ result = logOn.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Level1 ||
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Level2 ||
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Level3)
+ {
+ // 비밀번호 만료일 10일 미만 체크 후 비밀번호 변경
+ this.PasswordExpirationCheck(this.ParentForm.CurrentSystemStatus.CurrentUser);
+ }
+
+ //this.ParentForm.ChildFormMenu.CenterEquipUserGroupEditor.UpdateAllMenu(this.ParentForm.CurrentSystemStatus);
+ this.DisplayRefresh();
+
+ this.buttonUser.ButtonDown();
+ this.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus.CurrentUser);
+ }
+ else if (result == DialogResult.Abort)
+ {
+ // 비밀 번호 변경 띄우기
+ DialogFormLogOn logOn1 = new DialogFormLogOn(this.ParentForm, false, true);
+ if (logOn1.ShowDialog() == DialogResult.OK)
+ {
+ //this.ParentForm.ChildFormMenu.CenterEquipUserGroupEditor.UpdateAllMenu(this.ParentForm.CurrentSystemStatus);
+ this.DisplayRefresh();
+
+ this.buttonUser.ButtonDown();
+ this.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus.CurrentUser);
+ }
+ else
+ this.buttonUser.ButtonUp();
}
else
{
@@ -354,19 +429,65 @@ namespace INT_PT002.Forms
}
public void Logout()
{
- this.ParentForm.CurrentSystemStatus.CurrentUser.Status = Define.E_UserStatus.LogOff;
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut;
this.buttonUser.ButtonUp();
this.buttonUser.ButtonText = "Login";
- this.DisplayRefresh();
+ this.ChangeID = "";
// Part 11
this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Logout, "");
+
+ this.DisplayRefresh();
+ }
+ private void PasswordExpirationCheck(UserItem user)
+ {
+ int expiryDay = 0;
+
+ // 만료일 -10 일때 메시지 띄우기
+ expiryDay = user.GetPasswordExpiryDday();
+ if (expiryDay >= -10)
+ {
+ //Console.WriteLine("password : " + expiryDay.ToString());
+ if (expiryDay < 0)
+ expiryDay *= -1;
+
+ DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.LANGUAGE, 2, expiryDay.ToString());
+ if (myDlg.ShowDialog() == DialogResult.Yes)
+ {
+ // 비밀 번호 변경 띄우기
+ DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, true, true);
+ if (logOn.ShowDialog() == DialogResult.OK)
+ {
+
+ }
+ }
+ }
}
public void Part11AutomaticLogoutReset()
{
//UserManager.UserManager_AutoLogoutTimeoutReset();
}
+ public string DisplayExpireOfPassword(Define.E_UserGroup group)
+ {
+ string ret = "";
+ if (group == Define.E_UserGroup.Admin || group == Define.E_UserGroup.Developer)
+ ret = "-";
+ else
+ {
+ //TimeSpan resultTime = DateTime.Now - this.ParentForm.CurrentSystemStatus.CurrentUser.DateExpireRegister;
+ TimeSpan dayDiff = DateTime.Now.Date - this.ParentForm.CurrentSystemStatus.CurrentUser.DatePasswordExpire.Date;
+ ret = dayDiff.Days.ToString();
+ }
+
+ return ret;
+ }
+
+ public void CallBackUserListModifyInfoData(UserManager.UserMgr_user_info_t user)
+ {
+ this.ParentForm.CurrentSystemStatus.CurrentUser.DatePasswordExpire = DateTime.Now.AddDays(this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword - 1);
+ this.DisplayExpireOfPassword(this.ParentForm.CurrentSystemStatus.CurrentUser.Group);
+ }
public void CallBackUserListLoginTimeoutDataEvent(UserManager.UserMgr_login_timeout_t user)
{
string code = "", message1 = "", message2 = "";
@@ -483,6 +604,60 @@ namespace INT_PT002.Forms
}
}
+ public void InitialEthernetIcon()
+ {
+ // 이더넷
+ if (this.ParentForm.SystemConfig.IsEthernetEnable == true)
+ {
+ this.pictureBoxEthernetDisable.Visible = false;
+ this.pictureBoxEthernetDisconnection.Visible = true;
+ this.pictureBoxEthernetConnection.Visible = false;
+ }
+ else
+ {
+ this.pictureBoxEthernetDisable.Visible = true;
+ this.pictureBoxEthernetDisconnection.Visible = false;
+ this.pictureBoxEthernetConnection.Visible = false;
+ }
+ }
+ public void UpdateEthernetStatusDisplay(bool status)
+ {
+ //Console.Write("\n" + string.Format("UpdateEthernetStatusDisplay {0:yyyy-MM-dd HH:mm:ss}: {1}", DateTime.Now, status.ToString()));
+
+ if (this.BeforeEthernetStatus == status)
+ return;
+ else
+ this.BeforeEthernetStatus = status;
+
+ if (status == true)
+ {
+ this.pictureBoxEthernetConnection.Visible = true;
+ this.pictureBoxEthernetDisconnection.Visible = false;
+ }
+ else
+ {
+ this.pictureBoxEthernetConnection.Visible = false;
+ this.pictureBoxEthernetDisconnection.Visible = true;
+ }
+ }
+ public void TimerServer(bool value)
+ {
+ if (value == false)
+ {
+ if (this.timerServer.IsStart == true)
+ this.timerServer.Stop();
+ }
+ else
+ {
+ if (this.timerServer.IsStart == false)
+ this.timerServer.Start();
+ }
+ }
+ public void MainButtonModbusAdd(bool bValue)
+ {
+ this.buttonModbus.Visible = bValue;
+ }
+
public void UpdateProcessStatusDisplay(Define.E_ProcessStatus status)
{
switch (status)
@@ -923,6 +1098,8 @@ namespace INT_PT002.Forms
{
string before = "", after = "";
+ this.Part11AutomaticLogoutReset();
+
before = this.buttonRecipeNo.ButtonText;
DialogFormNumKeyPad myKeypad = new DialogFormNumKeyPad("NUMBER", this.buttonRecipeNo.ButtonText, 4, 0, false);
@@ -945,11 +1122,15 @@ namespace INT_PT002.Forms
}
private void buttonDisplayGraph_Click(object sender, EventArgs e)
{
+ this.Part11AutomaticLogoutReset();
+
this.ChildControl.DisplayRefresh(1);
this.ChildControl.Visible = true;
}
private void buttonInspection_Click(object sender, EventArgs e)
{
+ this.Part11AutomaticLogoutReset();
+
this.ParentForm.TransferData(CommunicationCommand.CutInpupt, CommunicationID.MainBoard);
this.InitializeData();
@@ -957,7 +1138,9 @@ namespace INT_PT002.Forms
}
private void buttonUser_Click(object sender, EventArgs e)
{
- if (this.ParentForm.CurrentSystemStatus.CurrentUser.Status == Define.E_UserStatus.LogOff)
+ this.Part11AutomaticLogoutReset();
+
+ if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.LogOut)
{
this.Login();
}
@@ -973,12 +1156,21 @@ namespace INT_PT002.Forms
}
private void buttonMenu_Click(object sender, EventArgs e)
{
+ this.Part11AutomaticLogoutReset();
+
if (this.ParentForm.CurrentSystemStatus.EquipmentStatus == Define.E_EquipmentStatus.Stop)
{
+ UserManager.UserManager_AutoLogoutTimeoutPause();
+
this.ParentForm.ChildFormMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.ParentForm.FormChange((int)Define.E_FormStore.FormMenu);
}
}
+ private void buttonModbus_Click(object sender, EventArgs e)
+ {
+ this.Part11AutomaticLogoutReset();
+
+ }
private void smartDraw1_Click(object sender, EventArgs e)
{
@@ -1076,6 +1268,16 @@ namespace INT_PT002.Forms
this.progressBar1.Value++;
}
}
+ private void timerServer_Tick(object sender, EventArgs e)
+ {
+ if (this.ParentForm.smartTCPMultiServer.IsStart == true)
+ {
+ if (this.ParentForm.smartTCPMultiServer.ClientInfoList == null)
+ this.UpdateEthernetStatusDisplay(false);
+ else
+ this.UpdateEthernetStatusDisplay(true);
+ }
+ }
#endregion
private void smartButton1_Click(object sender, EventArgs e)
@@ -1106,7 +1308,6 @@ namespace INT_PT002.Forms
this.labelAlarm.Location = new Point(3, 26);
}
}
-
private void smartButton2_Click(object sender, EventArgs e)
{
string value = "";
@@ -1135,7 +1336,6 @@ namespace INT_PT002.Forms
this.labelAlarm.Location = new Point(3, 26);
}
}
-
private void smartButton3_Click(object sender, EventArgs e)
{
string value = "";
@@ -1164,7 +1364,6 @@ namespace INT_PT002.Forms
this.labelAlarm.Location = new Point(3, 26);
}
}
-
private void smartButton4_Click(object sender, EventArgs e)
{
string value = "";
@@ -1193,7 +1392,6 @@ namespace INT_PT002.Forms
this.labelAlarm.Location = new Point(3, 26);
}
}
-
private void smartButton5_Click(object sender, EventArgs e)
{
switch (this.testIndex)
diff --git a/INT_PT002/Forms/FormMainDisplay3.resx b/INT_PT002/Forms/FormMainDisplay3.resx
index af51f0b..685bf98 100644
--- a/INT_PT002/Forms/FormMainDisplay3.resx
+++ b/INT_PT002/Forms/FormMainDisplay3.resx
@@ -807,6 +807,170 @@
H3HkkU847tjflMoRERGXVltrbMWxdcdWn0X+NSFLGOIhcgn3UwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
gMMO+/8D1Kf/GEWpAm0AAAAASUVORK5CYII=
+
+
+
+
+ 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
+ pFqG52IXblgWas7RDhsXAAAAAElFTkSuQmCC
@@ -4006,648 +4170,550 @@
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
- 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
- Duq6f6G6Y1kH/R3CYg4AOr5x3w75FvprqI51dPxzgt6K6/hdfXh7FQDAAe51r3v508/03qkvbJIRfNZH
- 2rw+9roTx//fy8bf/qKxt5w2NXTFyPo1o3/8O5MXv2Xig28a3fCcHSe3hnvz5EeNvuoZu2/8+s7L3jvx
- rpeNvOh4OySwjXMzjxh92W9NXvzm3f/4d+PvetmOtQ+f8/6fGR+5Y92vTwy+bvLDb5v80DlTf/OxXV/9
- 9K5rPrXr7/56jrblmk/Z0Uj6R+z9zzt2fe0qm9p3/f3mslfaN+7edt3Mhwjt22ffO3MlX/3M3ttvSVfy
- 4x//+MCvgPfs2X3T1qmvfNK+y648bXvTm97kdx+sdDou1QEPADp+/P9i6Dio+WUt2oPmPMcAHf8jgh5Y
- zL1Xevm/4/EJBwBGx78p7/5wruPr8QctazEHAKWDlgXtXx1vgNHxSnorzq7Koy0WdCMBAJaAr3/96+kJ
- aM+/3jTy4ifNncJntdF87cNmX9p/xMi6x9sBwPjbT99x4sNmpvaTHrFjbeutO/sd/ZPfs8OJkec/diZj
- 39u+9MD/BvCw0TOeNvXFvxp5wRPmvEEoOfshpDM/xS76w0fvvvG6dCMPNaOjo89+9rPtbvnGN77hm+Zy
- ++23/+Iv/mK662DF03GBj3YAUPqzQpvI7aYelI43qePrnX5ZCxk0bTr0CzLsxnhoEfR879n033EeNewe
- 8FAL2+gXt1iSqbojvc2RiUN3Uzu+oG50vMeEeR6TnijQ8Z/T/Q7SsWU78OvyFxf2OOl42GN0/J1Yb8X1
- /DAGAFhKjjrqqPQEND05PnHRGzoM4q2zI+seu/OKCycuemN7ozvzxn0/PXrWM3d95TOjZz7twKWdHDvn
- +VN/+8kdpxwp28Xxd//xvj27040ssXfv3ttuu83PdI19l5+a5T//8z9POumkdLc8+tGPzo8B7Ef83u/9
- XgrAaqDjAt/NAFTiUKz9HT/+v/sPQDzw+6655O9J8Ata5IPmPMcAi7nfEr3deza6lab/0n8Udeim6o70
- NkcmDt1NLQ3x9tCyx4yHCpR+JdVxjG6zyAOA0q+h7AFw0NtslG526fcevRXX8Ub24Q+sAQCUb33L//h1
- 97f/fuR5x8n8Pcc/fPTkxW/Z+dedPjO05ewBwKcPcgBw6tGTH3pr548fbWmHHLu/6SPF1q1bXziXF81y
- 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
- Ced6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIh
- HYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhI
- R7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQ
- ChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePo
- a1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6
- DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYke
- gkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7me
- g4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChEREePoa1UBCed6DiIhHYkegkhIR7meg4qQChER
- EePoa1UBCSPisug7JFSEVIiIiBhHX6sKSBgRl0XfIaEipEJERMQ4+lpVQMKIuCz6DgkVIRUiIiLG0deq
- AhJGxGXRd0ioCKkQERExjr5WFZAwIi6LvkNCRUiFiIiIcfS1qoCEEXFZ9B0SKkIqREREjKOvVQUkjIjL
- ou+QUBFSISIiYhx9rSogYURcFn2HhIqQChEREePoa1UBCSPisug7JFSEVIiIiBhHX6sKSDj3hNNei9GU
- jkQJYwSlo1zfIaEipEJERMQ4+lpVQMK5MsdgBKUjUcIYQeko13dIqAipEBERMY6+VhWQcK7MMRhB6UiU
- MEZQOsr1HRIqQipERESMo69VBSScK3MMRlA6EiWMEZSOcn2HhIqQChEREePoa1UBCefKHFOX684458ab
- br7l1ts6esWVWyRfi9KRKOEaPe+CS6y46f3cdfc9l1x2lWTqUjrK9R0SKkIqREREjKOvVQUknCtzTF1e
- ePHlPkIWkHwtSkeihKvTZn2vZy7Xf/NGSVakdJTrOyRUhFSIiIgYR1+rCkg4V+aY6jz73MHzLrik7RVX
- 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
- gMMO+/8D1Kf/GEWpAm0AAAAASUVORK5CYII=
+ j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAfw9JREFUeF7tvQmUpFWZ
+ p984Ln2Oc9rW6bGdbv8ygwjKvtguaItrj7bdirI0ImIpIAqIIiqIoLLXiCwqhVouJSKyNZuKWsqiCAhF
+ u4CNtiwi0oXSWli5b1VZ/zfzvhUV+btxsyLXeG/m85zn1In84heRUfH7vrj3xpZ/BgAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQXnc4x733//7f//z
+ P//zV7ziFSeeeOIFF1xwww03/OIXv/jud7971lln3X777ffff79t+epXv3ryySf/wz/8g4Wf9KQnPfax
+ j/XLAwAAAABAFey666633Xbbhunyox/9aJdddvHrAgAAAACAsLzgBS/46U9/6hP5mWHXY9fm1wsAAAAA
+ AKF47nOfe8cdd/jkPbFuZHSgb8Pw4MjPfzR4xWf6l32o7+S39bzvn/tOPWT45mt7P7x/z7v/r23p//Sx
+ g5d+euSuWy082tezYd06v/g4t91226677uq/AwAAAAAAOs7OO+986623+oR9HJvKr3vwV4OXLxv61oXD
+ 37+q+x0v6fqX7Rv2HP3aoesu637Xy5o3di953vDt3xu85JND13xx3X0/H1s5NMEyAAAAAAAgBK94xSvu
+ uecen6cbw4M2j+9f9qHuQ//epvWD/3p+/znvG5vi779prt9zzOuGb7ii54hXNraMuf/2/WcfPXjFZ+20
+ rQ36z//Q8G0rN6wb8avdsOHee+995Stf6b8VAAAAAADmnyVLlgwMDPgMff369Q/du+6X/9Z3+ju6DtjJ
+ 5vF9n3j30Le/2n3YSzfN8sftOeb1LRYA4w7/8Bt9J7997PRbduv7xFEj/377ugd+0VgGjIyMHHLIIf67
+ AQAAAABgPjnxxBPTvNwYXfvHwUs/3fO+f+4/53026R+84rP9Zx89fNM3+s87rnl+n+w56tVjbwF65/jC
+ oOmVAbNv6btGVl3Xf/Z7h76xYujaC/pOPdjWCYMXnzv6pz/4b9qw4bTTTvNbAAAAAAAA88PZZ5/t8/EN
+ G9bd/+82cW9M4sfewHPuMcO3fmf9Iw/ZPH5g+Uft3N5j9+45/BXdB+/R9Zbdeo553dB3Lxn7DMABO3cv
+ eX73O/e0LX2nHWLJwcuXrf+v/xy++dr+c983Ft60MHjnunt+5r9vw4ZPfvKTfjsAAAAAAGCu+cQnPuEz
+ 8Q0bRlZdZ9P3xky94eBFZw9e+bm+Uw4euOisoWu+OPSdrw5d+5XBa74weNl5Q9+5yNYMY6cvPnfw6uVD
+ 3/zy0MqLh751oZ3V9/EjB758xtDXvySvDJg973mNLQz8t27YcM455/itAQAAAACAueOEE07wOfiGDcM3
+ XNl92J4yUzd7j9t36LrLet7zj2M/vmW3nsNf0fOBvXo/epDN7/s/+f7BSz+17pc/toVB/3nH9p/zvr5T
+ D+n90L49R726+23Pt3z3oS8e/v5VPe/fq3FtDe2soesu99+9YcNHP/pRv00AAAAAADAXLFmyxGffNvv/
+ /lXN79Jptv+zJwxe/fmuN+0o28fcf8ee97526LuX2qqgdeCAnQYvO29gxeljp/fXDwnYImH4hiv8FmzY
+ YLfHbxnAvLP11lsfNpF99tnHz5sBfl3TZc899/Qrahv5j/jWCskbaYnF/AIzwLr2q5sWzbuKb5o95D84
+ ize1HY477rirr776N7/5jT9MN3H33XdfeOGFk1yh7b3+W2eJNm+8xc4///zbb79dbvYf/vCHzd7mSZjS
+ f8cvAwAQjVe+8pWN7/wZWXVdy+f+zZ53vXzs87tnvlu2jzk+mx//OwCXy98BaLbv1EPGAkvGXhDIHfuL
+ Abd9N90Muz0ve9nL/PYBzC82XUj7YTPTmygkbLrQ1zfhL2BMA7sGv7r2sBsskx6b8Uxjinz99df75Tdi
+ s0A/r4D96pb/X5t1eWIq2LX55dvD/pt2C6c38Wo5u50qaVexeaf/PHvYnplup2H/Td86A9rcq8844wzr
+ zi8zKXYH2jrBL9bEzPf/nMlvvN3mNtu0/5qF/WJtMI1m7ZbYpaaxhgcAmCt23nnne++9Nz1Irbv/33uO
+ eb3Myxv2fvhNNn1v+S2fyRZ/B0Ce5j/kRcM3XNn7of2aNzZrl7XbkG7Mf/zHf9ht81sJMI+0nFrN5Jm8
+ 2ZoL+tW1R8spl/3X/Oy28Us2MfmVlGb/hm2fxgrkwgsv9MtPEZvY2WXb/41TXWmUSLvKtG/2JDTueZtK
+ +qaZsdm92u6TaSyKbKEid7ufMauUbvz0brPtLW0e4zNZetlymmUAAISg8bd+R//0h75PND27v992Xfs+
+ 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
+ ptYAAAAASUVORK5CYII=
@@ -4662,6 +4728,9 @@
503, 11
+
+ 683, 11
+
WEBPAD
diff --git a/INT_PT002/Forms/FormMainDisplay4.cs b/INT_PT002/Forms/FormMainDisplay4.cs
new file mode 100644
index 0000000..ed4d028
--- /dev/null
+++ b/INT_PT002/Forms/FormMainDisplay4.cs
@@ -0,0 +1,1179 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Threading;
+
+using SmartX;
+using INT_PT002.DataStore;
+using INT_PT002.Controls;
+using INT_PT002.Part11_UserManager;
+using INT_PT002.DialogForms;
+
+namespace INT_PT002.Forms
+{
+ public partial class FormMainDisplay4 : Form
+ {
+ #region Field
+ private int FlagIgnoreCNT;
+
+ private string MessageBoxRange;
+ // 이전 단계 번호(Index 아님) 저장용 변수
+ private Define.E_ProcessStatus PreviousStageNum;
+
+ int testIndex;
+ private Define.E_ProcessStatus ProcessStatus;
+
+ private Color ColorProgressOn;
+ private Size SizeProgressOn;
+ private Color ColorProgressOff;
+ private Size SizeProgressOff;
+ private Color ColorResultPass;
+ private Color ColorResultNG;
+ private Color ColorResultNone;
+ private Color ColorSensorNormal;
+ private Color ColorSensorError;
+
+ private Collection CollectionLabelPoint;
+ private Collection CollectionLabelResult;
+ private Collection CollectionLabelProgress;
+ private Collection CollectionLabelProgress2;
+ private Collection CollectionPictureBoxSelected;
+ private Collection CollectionPictureBoxUnselected;
+ private Collection CollectionLabelPressure;
+ private Collection CollectionLabelLeakRatePerSec;
+ private Collection CollectionLabelSbAlarm;
+
+ private FormMain m_ParentForm;
+
+ private ControlMainDisplay ChildControl;
+ #endregion
+
+ #region Constructor
+ public FormMainDisplay4(FormMain parent)
+ {
+ InitializeComponent();
+
+ this.ParentForm = parent;
+
+ this.DefaultSetting();
+ this.InitializeData();
+ this.InitializeLanguage();
+ }
+ #endregion
+
+ #region Property
+ public FormMain ParentForm
+ {
+ get { return this.m_ParentForm; }
+ private set { this.m_ParentForm = value; }
+ }
+ #endregion
+
+ #region Method
+ private void DefaultSetting()
+ {
+ int testIndex = 0;
+
+ this.FlagIgnoreCNT = 0;
+ this.MessageBoxRange = "";
+ this.ProcessStatus = Define.E_ProcessStatus._0_None;
+ this.PreviousStageNum = Define.E_ProcessStatus._0_None;
+
+ this.ColorProgressOff = Color.FromArgb(231, 231, 231);
+ this.SizeProgressOff = new Size(155, 140);
+ this.ColorProgressOn = Color.FromArgb(95, 196, 188);
+ this.SizeProgressOn = new Size(190, 170);
+ this.ColorResultPass = Color.FromArgb(39, 200, 64);
+ this.ColorResultNG = Color.FromArgb(254, 70, 70);
+ this.ColorResultNone = Color.FromArgb(42, 43, 45);
+ this.ColorSensorNormal = Color.FromArgb(39, 200, 64);
+ this.ColorSensorError = Color.FromArgb(254, 70, 70);
+
+ this.CollectionLabelResult = new Collection();
+ this.CollectionLabelResult.Clear();
+ this.CollectionLabelResult.Add(this.labelResult1);
+ this.CollectionLabelResult.Add(this.labelResult2);
+ this.CollectionLabelResult.Add(this.labelResult3);
+ this.CollectionLabelResult.Add(this.labelResult4);
+ this.CollectionLabelResult.Add(this.labelResult5);
+ this.CollectionLabelResult.Add(this.labelResult6);
+ this.CollectionLabelResult.Add(this.labelResult7);
+ this.CollectionLabelResult.Add(this.labelResult8);
+ this.CollectionLabelResult.Add(this.labelResult9);
+ this.CollectionLabelResult.Add(this.labelResult10);
+
+ // 배경 사각형 라벨
+ this.CollectionLabelProgress = new Collection();
+ this.CollectionLabelProgress.Clear();
+ this.CollectionLabelProgress.Add(this.labelProgress0);
+ this.CollectionLabelProgress.Add(this.labelProgress1);
+ this.CollectionLabelProgress.Add(this.labelProgress2);
+ this.CollectionLabelProgress.Add(this.labelProgress3);
+
+ // 기존 배경 라벨 사이즈 저장
+ this.CollectionLabelPoint = new Collection();
+ this.CollectionLabelPoint.Clear();
+ for (int i = 0; i < this.CollectionLabelProgress.Count; i++)
+ this.CollectionLabelPoint.Add(new Point(this.CollectionLabelProgress[i].Location.X, this.CollectionLabelProgress[i].Location.Y));
+
+ // 문구가 적힌 라벨
+ this.CollectionLabelProgress2 = new Collection();
+ this.CollectionLabelProgress2.Clear();
+ this.CollectionLabelProgress2.Add(this.labelProgress0_1);
+ this.CollectionLabelProgress2.Add(this.labelProgress1_1);
+ this.CollectionLabelProgress2.Add(this.labelProgress2_1);
+ this.CollectionLabelProgress2.Add(this.labelProgress3_1);
+
+ // pictureBox - Selected
+ this.CollectionPictureBoxSelected = new Collection();
+ this.CollectionPictureBoxSelected.Clear();
+ this.CollectionPictureBoxSelected.Add(this.pictureBoxProgress0Selected);
+ this.CollectionPictureBoxSelected.Add(this.pictureBoxProgress1Selected);
+ this.CollectionPictureBoxSelected.Add(this.pictureBoxProgress2Selected);
+ this.CollectionPictureBoxSelected.Add(this.pictureBoxProgress3Selected);
+
+ // pictureBox - Unselected
+ this.CollectionPictureBoxUnselected = new Collection();
+ this.CollectionPictureBoxUnselected.Clear();
+ this.CollectionPictureBoxUnselected.Add(this.pictureBoxProgress0);
+ this.CollectionPictureBoxUnselected.Add(this.pictureBoxProgress1);
+ this.CollectionPictureBoxUnselected.Add(this.pictureBoxProgress2);
+ this.CollectionPictureBoxUnselected.Add(this.pictureBoxProgress3);
+
+ this.CollectionLabelPressure = new Collection();
+ this.CollectionLabelPressure.Clear();
+ this.CollectionLabelPressure.Add(this.labelPressure1);
+ this.CollectionLabelPressure.Add(this.labelPressure2);
+ this.CollectionLabelPressure.Add(this.labelPressure3);
+ this.CollectionLabelPressure.Add(this.labelPressure4);
+ this.CollectionLabelPressure.Add(this.labelPressure5);
+ this.CollectionLabelPressure.Add(this.labelPressure6);
+ this.CollectionLabelPressure.Add(this.labelPressure7);
+ this.CollectionLabelPressure.Add(this.labelPressure8);
+ this.CollectionLabelPressure.Add(this.labelPressure9);
+ this.CollectionLabelPressure.Add(this.labelPressure10);
+
+ this.CollectionLabelLeakRatePerSec = new Collection();
+ this.CollectionLabelLeakRatePerSec.Clear();
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec1);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec2);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec3);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec4);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec5);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec6);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec7);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec8);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec9);
+ this.CollectionLabelLeakRatePerSec.Add(this.labelLrSec10);
+
+ this.CollectionLabelSbAlarm = new Collection();
+ this.CollectionLabelSbAlarm.Clear();
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm1);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm2);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm3);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm4);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm5);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm6);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm7);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm8);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm9);
+ this.CollectionLabelSbAlarm.Add(this.labelSbAlarm10);
+
+ this.ChildControl = new ControlMainDisplay(this.ParentForm);
+ this.Controls.Add(this.ChildControl);
+ this.ChildControl.Location = new Point(0, 118);
+ this.ChildControl.BringToFront();
+ this.ChildControl.Visible = false;
+
+ this.buttonRecipeNo.ButtonText = this.ParentForm.SystemConfig.RECIPE_NUMBER.ToString();
+ this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus.CurrentUser);
+ }
+ private void InitializeData()
+ {
+ for (int i = 0; i < this.ParentForm.SystemConfig.EQUIPMENT_LANE; i++)
+ {
+ this.CollectionLabelResult[i].Visible = false;
+ this.CollectionLabelPressure[i].Text = "0.0";
+ this.CollectionLabelLeakRatePerSec[i].Text = "0.0";
+ this.CollectionLabelSbAlarm[i].Visible = false;
+ }
+ }
+ private void InitializeLanguage()
+ {
+ switch (this.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ this.labelProgress0_1.Text = "초기상태";
+ this.labelProgress1_1.Text = "이동 및 제품진입";
+ this.labelProgress2_1.Text = "측정 중";
+ this.labelProgress3_1.Text = "배출 및 원점복귀";
+ break;
+ case Define.E_LanguageID.English:
+ this.labelProgress0_1.Text = "Ready";
+ this.labelProgress1_1.Text = "Product entry";
+ this.labelProgress2_1.Text = "Measuring";
+ this.labelProgress3_1.Text = "Discharge";
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void SelectProcessLabelRefresh(int index)
+ {
+ this.CollectionLabelProgress[index].Location = new Point(this.CollectionLabelProgress[index].Location.X - 17, this.CollectionLabelProgress[index].Location.Y - 15);
+ this.CollectionLabelProgress[index].Size = this.SizeProgressOn;
+ this.CollectionLabelProgress[index].RoundRectFillColor = this.ColorProgressOn;
+ // 문구가 적히는 label
+ this.CollectionLabelProgress2[index].BackGroundColor = this.ColorProgressOn;
+
+ this.CollectionPictureBoxSelected[index].Visible = true;
+ this.CollectionPictureBoxSelected[index].BringToFront();
+ }
+ private void UnselectProcessLabelRefresh(int index)
+ {
+ this.CollectionLabelProgress[index].Location = this.CollectionLabelPoint[index];
+ this.CollectionLabelProgress[index].Size = this.SizeProgressOff;
+ this.CollectionLabelProgress[index].RoundRectFillColor = this.ColorProgressOff;
+ // 문구가 적히는 label
+ this.CollectionLabelProgress2[index].BackGroundColor = this.ColorProgressOff;
+
+ this.CollectionPictureBoxSelected[index].Visible = false;
+ //this.CollectionPictureBoxUnselected[index].BringToFront();
+ }
+ private void InitializeProcessLabelRefresh()
+ {
+ for (int i = 0; i < this.CollectionLabelProgress.Count; i++)
+ this.CollectionLabelProgress[i].RoundRectFillColor = this.CollectionLabelProgress[i].RoundRectFillColor;
+ }
+
+ private bool UI_Invoke(ThreadStart invoker)
+ {
+ try
+ {
+ if (this.InvokeRequired)
+ {
+ if (this.IsDisposed)
+ return true;
+
+ this.Invoke(invoker);
+ }
+ else
+ {
+ invoker();
+ }
+
+ return true;
+
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+
+ }
+
+ private void UpdateDisplayUser(UserItem user)
+ {
+ string id = "", group = "";
+
+ switch (user.Group)
+ {
+ case Define.E_UserGroup.None:
+ break;
+ case Define.E_UserGroup.Level1:
+ id = user.ID;
+ group = user.Group.ToString();
+
+ if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
+ this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+
+ this.buttonUser.ButtonDown();
+ this.buttonRecipeNo.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsMainDisplayProductChange;
+ this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsMainDisplayClear;
+ this.buttonInspection.Enabled = true;
+ this.buttonMenu.Enabled = true;
+ break;
+ case Define.E_UserGroup.Level2:
+ id = user.ID;
+ group = user.Group.ToString();
+
+ if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
+ this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+
+ this.buttonUser.ButtonDown();
+ this.buttonRecipeNo.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsMainDisplayProductChange;
+ this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsMainDisplayClear;
+ this.buttonInspection.Enabled = true;
+ this.buttonMenu.Enabled = true;
+ break;
+ case Define.E_UserGroup.Level3:
+ id = user.ID;
+ group = user.Group.ToString();
+
+ if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
+ this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+
+ this.buttonUser.ButtonDown();
+ this.buttonRecipeNo.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsMainDisplayProductChange;
+ this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsMainDisplayClear;
+ this.buttonInspection.Enabled = true;
+ this.buttonMenu.Enabled = true;
+ break;
+ case Define.E_UserGroup.Admin:
+ id = user.ID;
+ group = user.Group.ToString();
+
+ if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
+ this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+
+ this.buttonUser.ButtonDown();
+ this.buttonRecipeNo.Enabled = true;
+ this.buttonClear.Enabled = true;
+ this.buttonInspection.Enabled = true;
+ this.buttonMenu.Enabled = true;
+ break;
+ case Define.E_UserGroup.Developer:
+ id = user.ID;
+ group = user.Group.ToString();
+
+ if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOn)
+ this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOn;
+
+ this.buttonUser.ButtonDown();
+ this.buttonRecipeNo.Enabled = true;
+ this.buttonClear.Enabled = true;
+ this.buttonInspection.Enabled = true;
+ this.buttonMenu.Enabled = true;
+ break;
+ case Define.E_UserGroup.NotLogin:
+ id = "";
+ group = "";
+
+ this.buttonRecipeNo.Enabled = true;
+ this.buttonClear.Enabled = true;
+ this.buttonInspection.Enabled = true;
+ this.buttonMenu.Enabled = true;
+ break;
+ case Define.E_UserGroup.LogOut:
+ id = "Log Off";
+ group = "-";
+
+ if (this.labelUserLevel.TextColor != this.ParentForm.ColorLogOff)
+ this.labelUserLevel.TextColor = this.labelUserID.TextColor = this.ParentForm.ColorLogOff;
+
+ this.buttonUser.ButtonUp();
+ this.buttonRecipeNo.Enabled = false;
+ this.buttonClear.Enabled = false;
+ this.buttonInspection.Enabled = false;
+ this.buttonMenu.Enabled = false;
+ break;
+ default:
+ break;
+ }
+
+ this.buttonRecipeNo.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonRecipeNo.Enabled);
+ this.buttonClear.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonClear.Enabled);
+ this.buttonInspection.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonInspection.Enabled);
+ this.buttonMenu.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonMenu.Enabled);
+
+ if (this.labelUserLevel.Text != group)
+ this.labelUserLevel.Text = group;
+ if (this.labelUserID.Text != id)
+ this.labelUserID.Text = id;
+ }
+ private void Login()
+ {
+ DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, false, false);
+ if (logOn.ShowDialog() == DialogResult.OK)
+ {
+ this.DisplayRefresh();
+ this.buttonUser.ButtonDown();
+ this.buttonUser.ButtonText = "Logout";
+ //this.ParentForm.TimerAutomaticLogout(true, this.ParentForm.SystemConfig.AutomaticLogout);
+
+ // Part 11
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Login, "");
+ }
+ else
+ {
+ this.buttonUser.ButtonUp();
+ }
+ }
+ public void Logout()
+ {
+ this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut;
+ this.buttonUser.ButtonUp();
+ this.buttonUser.ButtonText = "Login";
+ this.DisplayRefresh();
+
+ // Part 11
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Logout, "");
+ }
+ public void Part11AutomaticLogoutReset()
+ {
+ //UserManager.UserManager_AutoLogoutTimeoutReset();
+ }
+
+ public void CallBackUserListLoginTimeoutDataEvent(UserManager.UserMgr_login_timeout_t user)
+ {
+ string code = "", message1 = "", message2 = "";
+ int warningTime = 0;
+
+ if (user.remainder_time != 0)
+ {
+ switch (this.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ code = "로그인";
+ message1 = "잠시 후에 로그아웃 됩니다";
+ message2 = "";
+ break;
+ case Define.E_LanguageID.English:
+ code = "Login";
+ message1 = "You will be logged out after a while";
+ message2 = "";
+ break;
+ default:
+ break;
+ }
+
+ warningTime = this.ParentForm.FlagAutomaticLogoutWarningTime - 2;
+
+ this.UI_Invoke(delegate
+ {
+ DialogFormMessage msg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, warningTime);
+ msg.ShowDialog();
+ });
+ }
+ else
+ {
+ switch (this.ParentForm.SystemConfig.LANGUAGE)
+ {
+ case Define.E_LanguageID.Korean:
+ code = "Login";
+ message1 = "자동 로그아웃 되었습니다";
+ message2 = "";
+ break;
+ case Define.E_LanguageID.English:
+ code = "Login";
+ message1 = "automatically logged out";
+ message2 = "";
+ break;
+ default:
+ break;
+ }
+
+ // User Logout
+ UserManager.UserManager_UserLogout();
+
+ this.UI_Invoke(delegate
+ {
+ this.Logout();
+ });
+
+ this.UI_Invoke(delegate
+ {
+ DialogFormMessage msg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, 0);
+ msg.ShowDialog();
+ });
+ }
+ }
+
+ private void GetJudgmentResult(Define.E_JudgmentStatus judg, SmartLabel label)
+ {
+ string value = "";
+
+ switch (judg)
+ {
+ case Define.E_JudgmentStatus.None:
+ value = "-";
+ label.BackGroundColor = this.ColorResultNone;
+ break;
+ case Define.E_JudgmentStatus.Pass:
+ value = "Pass";
+ label.BackGroundColor = this.ColorResultPass;
+ break;
+ case Define.E_JudgmentStatus.Ng:
+ value = "Leak";
+ label.BackGroundColor = this.ColorResultNG;
+ break;
+ case Define.E_JudgmentStatus.Error:
+ value = "Empty";
+ label.BackGroundColor = this.ColorResultNone;
+ break;
+ default:
+ break;
+ }
+
+ if (label.Text != value)
+ label.Text = value;
+ }
+ private void ProgressBarSetting(Define.E_ProcessStatus status)
+ {
+ //switch (status)
+ //{
+ // case Define.E_ProcessStatus._1_Initial:
+ // this.progressBar3.Visible = false;
+ // this.progressBar4.Visible = false;
+ // this.progressBar2.Visible = false;
+ // if (this.smartTimerProgressBar.IsStart == true)
+ // this.smartTimerProgressBar.Stop();
+ // break;
+ // case Define.E_ProcessStatus._4_VacuumStart:
+ // this.progressBar3.Maximum = this.ParentForm.CurrentRecipe.VACUUM_RELIEF * 10;
+ // this.progressBar3.Value = this.progressBar3.Maximum;
+
+ // this.progressBar3.Visible = true;
+ // this.smartTimerProgressBar.Start();
+ // break;
+ // case Define.E_ProcessStatus._5_VacuumHold:
+ // this.progressBar4.Maximum = this.ParentForm.CurrentRecipe.VACUUM_HOLD1 * 10;
+ // this.progressBar4.Value = this.progressBar4.Maximum;
+
+ // if (this.smartTimerProgressBar.IsStart == true)
+ // this.smartTimerProgressBar.Stop();
+ // this.progressBar3.Visible = false;
+ // this.progressBar4.Visible = true;
+ // this.smartTimerProgressBar.Start();
+ // break;
+ // case Define.E_ProcessStatus._7_VacuumBreak:
+ // this.progressBar2.Maximum = this.ParentForm.CurrentRecipe.VACUUM_BLOWOFF * 10;
+ // this.progressBar2.Value = this.progressBar2.Maximum;
+
+ // if (this.smartTimerProgressBar.IsStart == true)
+ // this.smartTimerProgressBar.Stop();
+ // this.progressBar4.Visible = false;
+ // this.progressBar2.Visible = true;
+ // this.smartTimerProgressBar.Start();
+ // break;
+ // case Define.E_ProcessStatus._8_ChamberSeparation:
+ // if (this.smartTimerProgressBar.IsStart == true)
+ // this.smartTimerProgressBar.Stop();
+ // this.progressBar2.Visible = false;
+ // break;
+ // default:
+ // break;
+ //}
+ }
+ private void ProgressBarSetting(Define.E_ProcessStatus2 status)
+ {
+ switch (status)
+ {
+ case Define.E_ProcessStatus2._1_Initial:
+ this.progressBar2.Visible = false;
+ if (this.smartTimerProgressBar.IsStart == true)
+ this.smartTimerProgressBar.Stop();
+ break;
+ case Define.E_ProcessStatus2._2_MovementAndProductEntry:
+ break;
+ case Define.E_ProcessStatus2._3_Measuring:
+ this.progressBar2.Maximum = this.ParentForm.CurrentRecipe.VACUUM_HOLD1 * 10;
+ this.progressBar2.Value = this.progressBar2.Maximum;
+
+ if (this.smartTimerProgressBar.IsStart == true)
+ this.smartTimerProgressBar.Stop();
+ this.progressBar2.Visible = true;
+ this.smartTimerProgressBar.Start();
+ break;
+ case Define.E_ProcessStatus2._4_DischargeAndReturnToOrigin:
+ if (this.smartTimerProgressBar.IsStart == true)
+ this.smartTimerProgressBar.Stop();
+ break;
+ default:
+ break;
+ }
+ }
+
+ public void UpdateProcessStatusDisplay(Define.E_ProcessStatus status)
+ {
+ this.ProcessStatus = status;
+
+ switch (this.PreviousStageNum)
+ {
+ case Define.E_ProcessStatus._0_None:
+ break;
+ case Define.E_ProcessStatus._1_Initial:
+ for (int i = 0; i < this.CollectionLabelProgress.Count; i++)
+ this.CollectionLabelProgress[i].Location = this.CollectionLabelPoint[i];
+
+ this.UnselectProcessLabelRefresh(0);
+ break;
+ case Define.E_ProcessStatus._2_ProductEntry:
+ this.UnselectProcessLabelRefresh(1);
+ break;
+ case Define.E_ProcessStatus._3_ChamberConbined:
+ this.UnselectProcessLabelRefresh(2);
+ break;
+ case Define.E_ProcessStatus._4_VacuumStart:
+ this.UnselectProcessLabelRefresh(3);
+ break;
+ case Define.E_ProcessStatus._5_VacuumHold:
+ this.UnselectProcessLabelRefresh(4);
+ break;
+ case Define.E_ProcessStatus._6_Judgment:
+ break;
+ case Define.E_ProcessStatus._7_VacuumBreak:
+ this.UnselectProcessLabelRefresh(5);
+ break;
+ case Define.E_ProcessStatus._8_ChamberSeparation:
+ this.UnselectProcessLabelRefresh(6);
+ break;
+ case Define.E_ProcessStatus._9_ProductRelease:
+ this.UnselectProcessLabelRefresh(7);
+ break;
+ default:
+ break;
+ }
+
+ switch (status)
+ {
+ case Define.E_ProcessStatus._0_None:
+ break;
+ case Define.E_ProcessStatus._1_Initial:
+ for (int i = 0; i < this.CollectionLabelProgress.Count; i++)
+ this.CollectionLabelProgress[i].Location = this.CollectionLabelPoint[i];
+
+ this.SelectProcessLabelRefresh(0);
+ break;
+ case Define.E_ProcessStatus._2_ProductEntry:
+ this.SelectProcessLabelRefresh(1);
+ break;
+ case Define.E_ProcessStatus._3_ChamberConbined:
+ this.SelectProcessLabelRefresh(2);
+ break;
+ case Define.E_ProcessStatus._4_VacuumStart:
+ this.SelectProcessLabelRefresh(3);
+ break;
+ case Define.E_ProcessStatus._5_VacuumHold:
+ this.SelectProcessLabelRefresh(4);
+ break;
+ case Define.E_ProcessStatus._6_Judgment:
+ break;
+ case Define.E_ProcessStatus._7_VacuumBreak:
+ this.SelectProcessLabelRefresh(5);
+ break;
+ case Define.E_ProcessStatus._8_ChamberSeparation:
+ this.SelectProcessLabelRefresh(6);
+ break;
+ case Define.E_ProcessStatus._9_ProductRelease:
+ this.SelectProcessLabelRefresh(7);
+ break;
+ default:
+ break;
+ }
+
+ this.PreviousStageNum = status;
+ this.ProgressBarSetting(status);
+ }
+ private void UpdateDisplayDotGraphDiff(SmartDraw draw, DiffData diff)
+ {
+ int iValue = 0;
+ double dValue = 0.0;
+
+ // 값 표시 범위
+ // 15.000 ~ -2.000 (17.000 ~ 0)
+ // 그래프 영역 높이 102
+ // 17000 / 102 = 166.666666~
+ //dValue = (int.Parse(data.CurrentValueSign + data.CurrentValue) + 2000) / 166.66666;
+
+ if (dValue > 110)
+ dValue = 110;
+ if (dValue < 1)
+ dValue = 1;
+
+ iValue = int.Parse(string.Format("{0:f0}", dValue));
+
+ draw.Chart.PutData(iValue);
+ }
+ private void UpdateDisplayDotGraphDisp(SmartDraw draw, DispData disp)
+ {
+ int iValue = 0;
+ double dValue = 0.0;
+
+ // 값 표시 범위
+ // 15.000 ~ -2.000 (17.000 ~ 0)
+ // 그래프 영역 높이 102
+ // 17000 / 102 = 166.666666~
+ //dValue = (int.Parse(data.CurrentValueSign + data.CurrentValue) + 2000) / 166.66666;
+
+ if (dValue > 110)
+ dValue = 110;
+ if (dValue < 1)
+ dValue = 1;
+
+ iValue = int.Parse(string.Format("{0:f0}", dValue));
+
+ draw.Chart.PutData(iValue);
+ }
+ public void UpdateEquipmentStatusDisplay(Define.E_EquipmentStatus status)
+ {
+ if (status == Define.E_EquipmentStatus.Start)
+ {
+ #region Start
+ this.labelStart.Visible = true;
+ this.labelStop.Visible = false;
+ #endregion
+ }
+ else
+ {
+ #region Stop
+ this.labelStart.Visible = false;
+ this.labelStop.Visible = true;
+
+ this.InitializeData();
+ #endregion
+ }
+ }
+ public void UpdateDisplayAlarmView(AlarmList alarm)
+ {
+ string value = "";
+
+ // ServoEmergencyStop
+ if (alarm.IsServoEmergencyStop == true)
+ value = "a1_Servo emergency stop ";
+ // Servo1Alarm
+ if (alarm.IsServo1Alarm == true)
+ value += "a2_Servo1 ";
+ // Servo2Alarm
+ if (alarm.IsServo2Alarm == true)
+ value += "a3_Servo2 ";
+ // ServoTorque1AlarmTorque
+ if (alarm.IsServoTorque1AlarmTorque == true)
+ value += "a4_Servo1 Torque ";
+ // ServoTorque2AlarmTorque
+ if (alarm.IsServoTorque2AlarmTorque == true)
+ value += "a5_Servo2 Torque ";
+ // PressureError
+ if (alarm.IsPressureError == true)
+ value += "a6_Pressure ";
+
+ // SB Alarm
+ this.CollectionLabelSbAlarm[0].Visible = alarm.CollectionIsSensorBoardError[0];
+ this.CollectionLabelSbAlarm[1].Visible = alarm.CollectionIsSensorBoardError[1];
+ this.CollectionLabelSbAlarm[2].Visible = alarm.CollectionIsSensorBoardError[2];
+ this.CollectionLabelSbAlarm[3].Visible = alarm.CollectionIsSensorBoardError[3];
+ this.CollectionLabelSbAlarm[4].Visible = alarm.CollectionIsSensorBoardError[4];
+ this.CollectionLabelSbAlarm[5].Visible = alarm.CollectionIsSensorBoardError[5];
+ this.CollectionLabelSbAlarm[6].Visible = alarm.CollectionIsSensorBoardError[6];
+ this.CollectionLabelSbAlarm[7].Visible = alarm.CollectionIsSensorBoardError[7];
+ this.CollectionLabelSbAlarm[8].Visible = alarm.CollectionIsSensorBoardError[8];
+ this.CollectionLabelSbAlarm[9].Visible = alarm.CollectionIsSensorBoardError[9];
+
+ value = value.Trim();
+ this.labelAlarm.Size = new Size(value.Length * 9, 30);
+ this.labelAlarm.Text = value;
+
+ if (this.labelAlarm.Width > 400)
+ {
+ if (this.labelAlarm.Text != "")
+ this.smartTimerAlarm.Start();
+ }
+ else
+ {
+ this.smartTimerAlarm.Stop();
+ this.labelAlarm.Location = new Point(3, 26);
+ }
+ }
+ public void UpdateDisplayDiffData(Collection datas)
+ {
+ for (int i = 0; i < this.ParentForm.SystemConfig.EQUIPMENT_LANE; i++)
+ this.CollectionLabelLeakRatePerSec[i].Text = datas[i].SecBufDiff;
+ }
+ public void UpdateDisplayDispData(Collection datas)
+ {
+
+ }
+ public void UpdateDisplayPresData(Collection datas)
+ {
+ for (int i = 0; i < this.ParentForm.SystemConfig.EQUIPMENT_LANE; i++)
+ this.CollectionLabelPressure[i].Text = datas[i].WorkingChamber.Trim();
+ }
+ public void UpdateDisplayJudgmentData(LeakData datas)
+ {
+ for (int i = 0; i < this.ParentForm.SystemConfig.EQUIPMENT_LANE; i++)
+ {
+ this.GetJudgmentResult(datas.CollJudgment[i], this.CollectionLabelResult[i]);
+ this.CollectionLabelResult[i].Visible = true;
+ }
+
+ this.ParentForm.TrackingInspectionData(datas);
+ this.ChildControl.UpdateStartLeakDataDisplay(datas);
+ }
+ public void UpdateDisplayRecipeData(Recipe data)
+ {
+ this.buttonRecipeNo.ButtonText = data.NUMBER.ToString();
+ }
+ public void UpdateDisplayTime()
+ {
+ this.labelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ }
+
+ public void DisplayRefresh()
+ {
+ this.ParentForm.CurrentSystemStatus.CurrentForm = Define.E_FormStore.FormMainDisplay;
+ this.ParentForm.CurrentSystemStatus.CurrentDisplayMode = Define.E_DisplayModeStore.MainDisplay;
+ this.ParentForm.SetDisplayMode(Define.E_EquipmentMode.Normal);
+
+ this.buttonRecipeNo.ButtonText = this.ParentForm.CurrentRecipe.NUMBER.ToString();
+ this.InitializeProcessLabelRefresh();
+
+ this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus.CurrentUser);
+ }
+ #endregion
+
+ #region Override Member
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ this.smartTimerLogin.Start();
+ }
+ #endregion
+
+ #region Event Handler
+ private void labelStop_Click(object sender, EventArgs e)
+ {
+ this.ParentForm.TransferData(CommunicationCommand.Start, CommunicationID.MainBoard);
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.EquipmentStart, "");
+ }
+ private void labelStart_Click(object sender, EventArgs e)
+ {
+ this.ParentForm.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.EquipmentStop, "");
+ }
+
+ private void buttonProductNo_Click(object sender, EventArgs e)
+ {
+ string before = "", after = "";
+
+ before = this.buttonRecipeNo.ButtonText;
+ DialogFormNumKeyPad myKeypad = new DialogFormNumKeyPad("NUMBER", this.buttonRecipeNo.ButtonText, 4, 0, false);
+
+ if (myKeypad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeypad.IntValue < 1 || myKeypad.IntValue > 1000)
+ {
+ this.MessageBoxRange = "1 ~ 1000";
+ this.buttonRecipeNo.ButtonText = before;
+ this.smartTimerMessageShow.Start();
+ return;
+ }
+
+ this.buttonRecipeNo.ButtonText = "**";
+ this.ParentForm.TransferRecipeParameter9043(myKeypad.IntValue);
+ after = myKeypad.StringValue;
+
+ this.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.RecipeNumber, "", before, after);
+ }
+ }
+ private void buttonDisplayGraph_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(1);
+ this.ChildControl.Visible = true;
+ }
+ private void buttonInspection_Click(object sender, EventArgs e)
+ {
+ this.ParentForm.TransferData(CommunicationCommand.CutInpupt, CommunicationID.MainBoard);
+
+ this.InitializeData();
+ this.ChildControl.ClearAllData();
+ }
+ private void buttonUser_Click(object sender, EventArgs e)
+ {
+ if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.LogOut)
+ {
+ this.Login();
+ }
+ else
+ {
+ DialogFormYesNo msg = new DialogFormYesNo(this.ParentForm.SystemConfig.LANGUAGE, 12);
+ if (msg.ShowDialog() == DialogResult.Yes)
+ {
+ this.Logout();
+ }
+ }
+ this.InitializeProcessLabelRefresh();
+ }
+ private void buttonMenu_Click(object sender, EventArgs e)
+ {
+ if (this.ParentForm.CurrentSystemStatus.EquipmentStatus == Define.E_EquipmentStatus.Stop)
+ {
+ this.ParentForm.ChildFormMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
+ this.ParentForm.FormChange((int)Define.E_FormStore.FormMenu);
+ }
+ }
+
+ private void smartDraw1_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(1);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw2_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(2);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw3_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(3);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw4_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(4);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw5_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(5);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw6_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(6);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw7_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(7);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw8_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(8);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw9_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(9);
+ this.ChildControl.Visible = true;
+ }
+ private void smartDraw10_Click(object sender, EventArgs e)
+ {
+ this.ChildControl.DisplayRefresh(10);
+ this.ChildControl.Visible = true;
+ }
+ private void buttonClear_Click(object sender, EventArgs e)
+ {
+ this.InitializeData();
+ this.ChildControl.ClearAllData();
+ }
+
+ private void buttonExit_Click(object sender, EventArgs e)
+ {
+ this.ParentForm.CloseSmartUartLink();
+ this.ParentForm.Dispose();
+ this.ParentForm.Close();
+ }
+
+ private void smartTimerAlarm_Tick(object sender, EventArgs e)
+ {
+ this.labelAlarm.Left = this.labelAlarm.Left - 5;
+ if (this.labelAlarm.Left < 0 - this.labelAlarm.Width - 20)
+ this.labelAlarm.Left = this.smartGroupBox1.Width - 10;
+ }
+ private void smartTimerMessageShow_Tick(object sender, EventArgs e)
+ {
+ this.smartTimerMessageShow.Stop();
+
+ DialogFormMessage msg = new DialogFormMessage(1, this.ParentForm.SystemConfig.LANGUAGE, this.MessageBoxRange);
+ msg.ShowDialog();
+ }
+ private void smartTimerLogin_Tick(object sender, EventArgs e)
+ {
+ this.smartTimerLogin.Stop();
+
+ //this.Login();
+ }
+ private void smartTimerProgressBar_Tick(object sender, EventArgs e)
+ {
+ //switch (this.ProcessStatus)
+ //{
+ // case Define.E_ProcessStatus._4_VacuumStart:
+ // if (this.progressBar3.Value > 0)
+ // this.progressBar3.Value -= 10;
+ // else
+ // this.smartTimerProgressBar.Stop();
+ // break;
+ // case Define.E_ProcessStatus._5_VacuumHold:
+ // if (this.progressBar4.Value > 0)
+ // this.progressBar4.Value -= 10;
+ // else
+ // this.smartTimerProgressBar.Stop();
+ // break;
+ // case Define.E_ProcessStatus._7_VacuumBreak:
+ // if (this.progressBar2.Value > 0)
+ // this.progressBar2.Value -= 10;
+ // else
+ // this.smartTimerProgressBar.Stop();
+ // break;
+ // default:
+ // break;
+ //}
+ }
+ #endregion
+
+ private void smartButton1_Click(object sender, EventArgs e)
+ {
+ string value = "";
+
+ this.smartTimerAlarm.Stop();
+
+ value = "a1_Servo emergency stop ";
+ //value += "a2_Servo1 ";
+ //value += "a3_Servo2 ";
+ //value += "a4_Servo1 Torque ";
+ //value += "a5_Servo2 Torque ";
+ //value += "a6_Pressure ";
+
+ value = value.Trim();
+ this.labelAlarm.Size = new Size(value.Length * 8, 20);
+ this.labelAlarm.Text = value;
+
+ if (this.labelAlarm.Width > 400)
+ {
+ if (this.labelAlarm.Text != "")
+ this.smartTimerAlarm.Start();
+ }
+ else
+ {
+ this.smartTimerAlarm.Stop();
+ this.labelAlarm.Location = new Point(3, 26);
+ }
+ }
+
+ private void smartButton2_Click(object sender, EventArgs e)
+ {
+ string value = "";
+
+ this.smartTimerAlarm.Stop();
+
+ value = "a1_Servo emergency stop ";
+ value += "a2_Servo1 ";
+ //value += "a3_Servo2 ";
+ //value += "a4_Servo1 Torque ";
+ //value += "a5_Servo2 Torque ";
+ //value += "a6_Pressure ";
+
+ value = value.Trim();
+ this.labelAlarm.Size = new Size(value.Length * 8, 20);
+ this.labelAlarm.Text = value;
+
+ if (this.labelAlarm.Width > 400)
+ {
+ if (this.labelAlarm.Text != "")
+ this.smartTimerAlarm.Start();
+ }
+ else
+ {
+ this.smartTimerAlarm.Stop();
+ this.labelAlarm.Location = new Point(3, 26);
+ }
+ }
+
+ private void smartButton3_Click(object sender, EventArgs e)
+ {
+ string value = "";
+
+ this.smartTimerAlarm.Stop();
+
+ value = "a1_Servo emergency stop ";
+ value += "a2_Servo1 ";
+ value += "a3_Servo2 ";
+ //value += "a4_Servo1 Torque ";
+ //value += "a5_Servo2 Torque ";
+ //value += "a6_Pressure ";
+
+ value = value.Trim();
+ this.labelAlarm.Size = new Size(value.Length * 8, 20);
+ this.labelAlarm.Text = value;
+
+ if (this.labelAlarm.Width > 400)
+ {
+ if (this.labelAlarm.Text != "")
+ this.smartTimerAlarm.Start();
+ }
+ else
+ {
+ this.smartTimerAlarm.Stop();
+ this.labelAlarm.Location = new Point(3, 26);
+ }
+ }
+
+ private void smartButton4_Click(object sender, EventArgs e)
+ {
+ string value = "";
+
+ this.smartTimerAlarm.Stop();
+
+ value = "a1_Servo emergency stop ";
+ value += "a2_Servo1 ";
+ value += "a3_Servo2 ";
+ value += "a4_Servo1 Torque ";
+ value += "a5_Servo2 Torque ";
+ //value += "a6_Pressure ";
+
+ value = value.Trim();
+ this.labelAlarm.Size = new Size(value.Length * 8, 20);
+ this.labelAlarm.Text = value;
+
+ if (this.labelAlarm.Width > 400)
+ {
+ if (this.labelAlarm.Text != "")
+ this.smartTimerAlarm.Start();
+ }
+ else
+ {
+ this.smartTimerAlarm.Stop();
+ this.labelAlarm.Location = new Point(3, 26);
+ }
+ }
+
+ private void smartButton5_Click(object sender, EventArgs e)
+ {
+ switch (this.testIndex)
+ {
+ case 0:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._1_Initial);
+ break;
+ case 1:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._2_ProductEntry);
+ break;
+ case 2:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._3_ChamberConbined);
+ break;
+ case 3:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._4_VacuumStart);
+ break;
+ case 4:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._5_VacuumHold);
+ break;
+ case 5:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._7_VacuumBreak);
+ break;
+ case 6:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._8_ChamberSeparation);
+ break;
+ case 7:
+ this.UpdateProcessStatusDisplay(Define.E_ProcessStatus._9_ProductRelease);
+ break;
+ default:
+ break;
+ }
+
+ if (this.testIndex >= 7)
+ this.testIndex = 0;
+ else
+ this.testIndex++;
+ }
+ }
+}
\ No newline at end of file
diff --git a/INT_PT002/Forms/FormMenu.Designer.cs b/INT_PT002/Forms/FormMenu.Designer.cs
index 5c35549..5081121 100644
--- a/INT_PT002/Forms/FormMenu.Designer.cs
+++ b/INT_PT002/Forms/FormMenu.Designer.cs
@@ -43,7 +43,7 @@
this.labelUserID = new SmartX.SmartLabel();
this.labelUserLevel = new SmartX.SmartLabel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
- this.smartLabel1 = new SmartX.SmartLabel();
+ this.labelTime = new SmartX.SmartLabel();
this.buttonBottom4 = new SmartX.SmartButton();
this.buttonBottom3 = new SmartX.SmartButton();
this.buttonBottom2 = new SmartX.SmartButton();
@@ -77,7 +77,7 @@
this.smartForm1.Controls.Add(this.labelUserID);
this.smartForm1.Controls.Add(this.labelUserLevel);
this.smartForm1.Controls.Add(this.pictureBox1);
- this.smartForm1.Controls.Add(this.smartLabel1);
+ this.smartForm1.Controls.Add(this.labelTime);
this.smartForm1.Controls.Add(this.buttonBottom4);
this.smartForm1.Controls.Add(this.buttonBottom3);
this.smartForm1.Controls.Add(this.buttonBottom2);
@@ -274,7 +274,7 @@
this.labelAlarm.BackGroundColor = System.Drawing.Color.Black;
this.labelAlarm.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
this.labelAlarm.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.labelAlarm.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold);
+ this.labelAlarm.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
this.labelAlarm.LineSpacing = 0F;
this.labelAlarm.Location = new System.Drawing.Point(0, 0);
this.labelAlarm.Name = "labelAlarm";
@@ -398,7 +398,7 @@
this.labelUserID.BackGroundColor = System.Drawing.Color.Black;
this.labelUserID.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
this.labelUserID.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.labelUserID.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold);
+ this.labelUserID.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
this.labelUserID.LineSpacing = 0F;
this.labelUserID.Location = new System.Drawing.Point(705, 13);
this.labelUserID.Name = "labelUserID";
@@ -421,7 +421,7 @@
this.labelUserLevel.BackGroundColor = System.Drawing.Color.Black;
this.labelUserLevel.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
this.labelUserLevel.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.labelUserLevel.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold);
+ this.labelUserLevel.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
this.labelUserLevel.LineSpacing = 0F;
this.labelUserLevel.Location = new System.Drawing.Point(811, 13);
this.labelUserLevel.Name = "labelUserLevel";
@@ -445,28 +445,28 @@
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(53, 30);
//
- // smartLabel1
+ // labelTime
//
- this.smartLabel1.BackGround = this.smartForm1;
- this.smartLabel1.BackGroundColor = System.Drawing.Color.Black;
- this.smartLabel1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
- this.smartLabel1.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
- this.smartLabel1.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold);
- this.smartLabel1.LineSpacing = 0F;
- this.smartLabel1.Location = new System.Drawing.Point(62, 3);
- this.smartLabel1.Name = "smartLabel1";
- this.smartLabel1.OverlapOptimize = true;
- this.smartLabel1.PasswordChar = '\0';
- this.smartLabel1.Radius = 3;
- this.smartLabel1.RoundRectFillColor = System.Drawing.Color.LightBlue;
- this.smartLabel1.Size = new System.Drawing.Size(166, 30);
- this.smartLabel1.TabIndex = 0;
- this.smartLabel1.Text = "2023-02-13 16:30:25";
- this.smartLabel1.TextColor = System.Drawing.Color.White;
- this.smartLabel1.TextColorDisable = System.Drawing.Color.Gray;
- this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
- this.smartLabel1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.smartLabel1.Wordwrap = false;
+ this.labelTime.BackGround = this.smartForm1;
+ this.labelTime.BackGroundColor = System.Drawing.Color.Black;
+ this.labelTime.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(42)))), ((int)(((byte)(82)))));
+ this.labelTime.BorderStyle = SmartX.SmartLabel.BorderStyles.None;
+ this.labelTime.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.labelTime.LineSpacing = 0F;
+ this.labelTime.Location = new System.Drawing.Point(62, 3);
+ this.labelTime.Name = "labelTime";
+ this.labelTime.OverlapOptimize = true;
+ this.labelTime.PasswordChar = '\0';
+ this.labelTime.Radius = 3;
+ this.labelTime.RoundRectFillColor = System.Drawing.Color.LightBlue;
+ this.labelTime.Size = new System.Drawing.Size(166, 30);
+ this.labelTime.TabIndex = 0;
+ this.labelTime.Text = "2023-02-13 16:30:25";
+ this.labelTime.TextColor = System.Drawing.Color.White;
+ this.labelTime.TextColorDisable = System.Drawing.Color.Gray;
+ this.labelTime.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTime.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTime.Wordwrap = false;
//
// buttonBottom4
//
@@ -845,7 +845,7 @@
private SmartX.SmartButton buttonBottom4;
private SmartX.SmartButton buttonBottom3;
private SmartX.SmartButton buttonBottom2;
- private SmartX.SmartLabel smartLabel1;
+ private SmartX.SmartLabel labelTime;
private System.Windows.Forms.PictureBox pictureBox1;
private SmartX.SmartLabel labelUserID;
private SmartX.SmartLabel labelUserLevel;
diff --git a/INT_PT002/Forms/FormMenu.cs b/INT_PT002/Forms/FormMenu.cs
index e427a14..eee9c4f 100644
--- a/INT_PT002/Forms/FormMenu.cs
+++ b/INT_PT002/Forms/FormMenu.cs
@@ -26,6 +26,7 @@ namespace INT_PT002.Forms
private ControlMenuRecipeSetting Child_Recipe_Setting;
// User
private ControlMenuUserUserEditor Child_User_UserEditor;
+ private ControlMenuUserMyPage Child_User_MyPage;
private ControlMenuUserGroupEditor Child_User_GroupEditor;
// Manual
private ControlMenuManualIoTest Child_Manual_IoTest;
@@ -36,6 +37,7 @@ namespace INT_PT002.Forms
// System
private ControlMenuSystemInformation Child_System_Information;
private ControlMenuSystemStatus Child_System_Status;
+ public ControlMenuSystemEthernet Child_System_Ethernet;
public Define.E_TopMenuStore SelectedTopMenu;
public Define.E_MenuRecipeStore SelectedMenuRecipe;
@@ -80,6 +82,7 @@ namespace INT_PT002.Forms
{
this.Child_Recipe_Setting = new ControlMenuRecipeSetting(this);
this.Child_User_UserEditor = new ControlMenuUserUserEditor(this);
+ this.Child_User_MyPage = new ControlMenuUserMyPage(this);
this.Child_User_GroupEditor = new ControlMenuUserGroupEditor(this);
this.Child_Manual_IoTest = new ControlMenuManualIoTest(this);
this.Child_Log_History = new ControlMenuLogHistory(this);
@@ -87,9 +90,11 @@ namespace INT_PT002.Forms
this.Child_Log_Alarm = new ControlMenuLogAlarm(this);
this.Child_System_Information = new ControlMenuSystemInformation(this);
this.Child_System_Status = new ControlMenuSystemStatus(this);
+ this.Child_System_Ethernet = new ControlMenuSystemEthernet(this);
this.Controls.Add(this.Child_Recipe_Setting);
this.Controls.Add(this.Child_User_UserEditor);
+ this.Controls.Add(this.Child_User_MyPage);
this.Controls.Add(this.Child_User_GroupEditor);
this.Controls.Add(this.Child_Manual_IoTest);
this.Controls.Add(this.Child_Log_Alarm);
@@ -97,9 +102,11 @@ namespace INT_PT002.Forms
this.Controls.Add(this.Child_Log_Inspection);
this.Controls.Add(this.Child_System_Information);
this.Controls.Add(this.Child_System_Status);
+ this.Controls.Add(this.Child_System_Ethernet);
this.Child_Recipe_Setting.Location = new Point(0, 39);
this.Child_User_UserEditor.Location = new Point(0, 39);
+ this.Child_User_MyPage.Location = new Point(0, 39);
this.Child_User_GroupEditor.Location = new Point(0, 39);
this.Child_Manual_IoTest.Location = new Point(0, 39);
this.Child_Log_Alarm.Location = new Point(0, 39);
@@ -107,9 +114,9 @@ namespace INT_PT002.Forms
this.Child_Log_Inspection.Location = new Point(0, 39);
this.Child_System_Information.Location = new Point(0, 39);
this.Child_System_Status.Location = new Point(0, 39);
+ this.Child_System_Ethernet.Location = new Point(0, 39);
}
-
-
+
public void UpdateButtonColor()
{
this.buttonRecipe.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonRecipe.Enabled);
@@ -118,45 +125,46 @@ namespace INT_PT002.Forms
this.buttonLog.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonLog.Enabled);
this.buttonSystem.ButtonColor = this.ParentForm.ButtonColorChange(this.buttonSystem.Enabled);
}
- private void UpdateDisplayUser(UserItem user)
+ public void UpdateDisplayUser(UserItem user)
{
string id = "", group = "";
- switch (user.Status)
+ switch (user.Group)
{
- case Define.E_UserStatus.Level1:
+ case Define.E_UserGroup.Level1:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
this.buttonRecipe.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsRecipeEnable;
- this.buttonUser.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsUserEnable;
+ this.buttonUser.Enabled = true;
this.buttonManual.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsManualEnable;
this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsLogEnable;
this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsSystemEnable;
break;
- case Define.E_UserStatus.Level2:
+ case Define.E_UserGroup.Level2:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
this.buttonRecipe.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsRecipeEnable;
- this.buttonUser.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsUserEnable;
+ this.buttonUser.Enabled = true;
this.buttonManual.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsManualEnable;
this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsLogEnable;
this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsSystemEnable;
break;
- case Define.E_UserStatus.Level3:
+ case Define.E_UserGroup.Level3:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
this.buttonRecipe.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsRecipeEnable;
- this.buttonUser.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsUserEnable;
+ this.buttonUser.Enabled = true;
this.buttonManual.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsManualEnable;
this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsLogEnable;
this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsSystemEnable;
break;
- case Define.E_UserStatus.Developer:
+ case Define.E_UserGroup.Admin:
+ case Define.E_UserGroup.Developer:
id = user.ID;
- group = user.Status.ToString();
+ group = user.Group.ToString();
this.buttonRecipe.Enabled = true;
this.buttonUser.Enabled = true;
@@ -223,6 +231,10 @@ namespace INT_PT002.Forms
this.labelAlarm.Location = new Point(0, 0);
}
}
+ public void UpdateDisplayTime()
+ {
+ this.labelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ }
#region Log
// FileCopy
@@ -404,6 +416,59 @@ namespace INT_PT002.Forms
}
#endregion
+ private void DisplayUserScreen(UserGroup group)
+ {
+ switch (this.ParentForm.CurrentSystemStatus.CurrentUser.Group)
+ {
+ case Define.E_UserGroup.Level1:
+ if (group.Level1.IsMenuUserSetting == true)
+ {
+ this.Child_User_UserEditor.DisplayRefresh();
+ this.Child_User_UserEditor.BringToFront();
+ }
+ else
+ {
+ this.Child_User_MyPage.DisplayRefresh();
+ this.Child_User_MyPage.BringToFront();
+ this.buttonBottom2.Visible = false;
+ }
+ break;
+ case Define.E_UserGroup.Level2:
+ if (group.Level2.IsMenuUserSetting == true)
+ {
+ this.Child_User_UserEditor.DisplayRefresh();
+ this.Child_User_UserEditor.BringToFront();
+ }
+ else
+ {
+ this.Child_User_MyPage.DisplayRefresh();
+ this.Child_User_MyPage.BringToFront();
+ this.buttonBottom2.Visible = false;
+ }
+ break;
+ case Define.E_UserGroup.Level3:
+ if (group.Level3.IsMenuUserSetting == true)
+ {
+ this.Child_User_UserEditor.DisplayRefresh();
+ this.Child_User_UserEditor.BringToFront();
+ }
+ else
+ {
+ this.Child_User_MyPage.DisplayRefresh();
+ this.Child_User_MyPage.BringToFront();
+ this.buttonBottom2.Visible = false;
+ }
+ break;
+ case Define.E_UserGroup.Developer:
+ case Define.E_UserGroup.Admin:
+ this.Child_User_UserEditor.DisplayRefresh();
+ this.Child_User_UserEditor.BringToFront();
+ break;
+ default:
+ break;
+ }
+ }
+
private void SetTopMenu(Define.E_TopMenuStore bottom)
{
switch (bottom)
@@ -488,10 +553,11 @@ namespace INT_PT002.Forms
this.buttonBottom1.ButtonText = "Information";
this.buttonBottom2.ButtonText = "Equipment";
+ this.buttonBottom3.ButtonText = "Ethernet";
this.buttonBottom1.Visible = true;
this.buttonBottom2.Visible = true;
- this.buttonBottom3.Visible = false;
+ this.buttonBottom3.Visible = true;
this.buttonBottom4.Visible = false;
this.SelectedMenuSystem = Define.E_MenuSystemStore._1_Information;
@@ -531,8 +597,7 @@ namespace INT_PT002.Forms
switch (menu)
{
case Define.E_MenuUserStore._1_UserEditor:
- this.Child_User_UserEditor.DisplayRefresh();
- this.Child_User_UserEditor.BringToFront();
+ this.DisplayUserScreen(this.ParentForm.CurrentUserGroup);
this.buttonBottom1.ButtonDown();
this.buttonBottom2.ButtonUp();
@@ -617,7 +682,7 @@ namespace INT_PT002.Forms
this.buttonBottom3.ButtonUp();
this.buttonBottom4.ButtonUp();
break;
- case Define.E_MenuSystemStore._2_Status:
+ case Define.E_MenuSystemStore._2_Equipment:
this.Child_System_Status.DisplayRefresh();
this.Child_System_Status.BringToFront();
@@ -626,6 +691,15 @@ namespace INT_PT002.Forms
this.buttonBottom3.ButtonUp();
this.buttonBottom4.ButtonUp();
break;
+ case Define.E_MenuSystemStore._3_Ethernet:
+ this.Child_System_Ethernet.DisplayRefresh();
+ this.Child_System_Ethernet.BringToFront();
+
+ this.buttonBottom1.ButtonUp();
+ this.buttonBottom2.ButtonUp();
+ this.buttonBottom3.ButtonDown();
+ this.buttonBottom4.ButtonUp();
+ break;
default:
break;
}
@@ -867,6 +941,20 @@ namespace INT_PT002.Forms
{
this.Child_User_UserEditor.CallBackUserModifyUserData(user);
}
+ public void CallBackUserListModifyInfoData(UserManager.UserMgr_user_info_t user)
+ {
+ try
+ {
+ if (this.ParentForm.CurrentSystemStatus.CurrentDisplayMode == Define.E_DisplayModeStore.UserEditor)
+ this.Child_User_UserEditor.CallBackUserListModifyInfoDataEvent(user);
+ else if (this.ParentForm.CurrentSystemStatus.CurrentDisplayMode == Define.E_DisplayModeStore.UserMyPage)
+ this.Child_User_MyPage.CallBackUserListModifyInfoDataEvent(user);
+ }
+ catch (Exception ex)
+ {
+ FormMain.Exception(ex);
+ }
+ }
public void CallBackUserListNewData(UserManager.UserMgr_user_info_t user)
{
this.Child_User_UserEditor.CallBackUserListNewData(user);
@@ -1174,7 +1262,7 @@ namespace INT_PT002.Forms
this.SetBottomMenuLog(this.SelectedMenuLog);
break;
case Define.E_TopMenuStore.System:
- this.SelectedMenuSystem = Define.E_MenuSystemStore._2_Status;
+ this.SelectedMenuSystem = Define.E_MenuSystemStore._2_Equipment;
this.SetBottomMenuSystem(this.SelectedMenuSystem);
break;
default:
@@ -1202,7 +1290,7 @@ namespace INT_PT002.Forms
this.SetBottomMenuLog(this.SelectedMenuLog);
break;
case Define.E_TopMenuStore.System:
- this.SelectedMenuSystem = Define.E_MenuSystemStore._0_None;
+ this.SelectedMenuSystem = Define.E_MenuSystemStore._3_Ethernet;
this.SetBottomMenuSystem(this.SelectedMenuSystem);
break;
default:
diff --git a/INT_PT002/Part11_UserManager/UserManager.Define.cs b/INT_PT002/Part11_UserManager/UserManager.Define.cs
index 54ccddd..5c38a63 100644
--- a/INT_PT002/Part11_UserManager/UserManager.Define.cs
+++ b/INT_PT002/Part11_UserManager/UserManager.Define.cs
@@ -4,14 +4,15 @@ using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
-
-
namespace INT_PT002.Part11_UserManager
{
public partial class UserManager
{
private const string PathDll = "SD Card\\Run\\DllUserMgr.dll";
+ private delegate void fnUserMgrVersionCB(StringBuilder version);
+ private static fnUserMgrVersionCB fnUserMgrVersionCallBack;
+
private delegate void fnUserMgrDebugCB(int level, StringBuilder pMessage);
private static fnUserMgrDebugCB fnUserMgrDebugCallBack;
@@ -51,6 +52,8 @@ namespace INT_PT002.Part11_UserManager
private delegate void fnUserMgrGetListNameCB(ref UserMgr_user_list_name_t user_name);
private static fnUserMgrGetListNameCB fnUsermgrGetListNameCallBack;
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ private static extern void DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCB func);
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCB func);
@@ -94,6 +97,9 @@ namespace INT_PT002.Part11_UserManager
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_HelloWorld();
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ private static extern void DLL_UserMgr_Getversion();
+
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern void DLL_UserMgr_Activation();
@@ -118,9 +124,15 @@ namespace INT_PT002.Part11_UserManager
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyPW(IntPtr user_id, IntPtr user_pw);
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ private static extern int DLL_UserMgr_UserModifyPWDirect(IntPtr user_id, IntPtr user_pw);
+
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyID(IntPtr user_org_id, IntPtr user_new_id);
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ private static extern int DLL_UserMgr_UserResetPWDirect(IntPtr user_id, IntPtr user_pw);
+
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserModifyOthers(IntPtr user_id, int fadmin, int expire_pw, int expire_account, int active_level);
@@ -130,6 +142,9 @@ namespace INT_PT002.Part11_UserManager
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserAllDel_Default();
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ private static extern int DLL_UserMgr_UserLoginFailLockSet(IntPtr user_id);
+
[DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
private static extern int DLL_UserMgr_UserLockRelease(IntPtr user_id, bool lock_account, bool lock_password);
diff --git a/INT_PT002/Part11_UserManager/UserManager.Structure.cs b/INT_PT002/Part11_UserManager/UserManager.Structure.cs
index 08fb8d3..b17e6e9 100644
--- a/INT_PT002/Part11_UserManager/UserManager.Structure.cs
+++ b/INT_PT002/Part11_UserManager/UserManager.Structure.cs
@@ -69,29 +69,29 @@ namespace INT_PT002.Part11_UserManager
USER_MGR_STATUS_OK = 0x00,
// error status
- USER_MGR_STATUS_ID_NOT_FOUND, // not found the user id
- USER_MGR_STATUS_ID_DUPLICATE, // duplicate on id
- USER_MGR_STATUS_ID_LENGTH_UNDER, // under the minimum length of id
- USER_MGR_STATUS_ID_LENGTH_OVER, // over the maximum length of id
- USER_MGR_STATUS_ID_CONT_LETTER, // continue characters or duplicate characters of id
- USER_MGR_STATUS_ID_INVALID_CHAR, // include the invalid character on id
- USER_MGR_STATUS_ID_ACCOUNT_LOCK,
+ USER_MGR_STATUS_ID_NOT_FOUND, // 1 - not found the user id
+ USER_MGR_STATUS_ID_DUPLICATE, // 2 - duplicate on id
+ USER_MGR_STATUS_ID_LENGTH_UNDER, // 3 - under the minimum length of id
+ USER_MGR_STATUS_ID_LENGTH_OVER, // 4 - over the maximum length of id
+ USER_MGR_STATUS_ID_CONT_LETTER, // 5 - continue characters or duplicate characters of id
+ USER_MGR_STATUS_ID_INVALID_CHAR, // 6 - include the invalid character on id
+ USER_MGR_STATUS_ID_ACCOUNT_LOCK, // 7 - Account Lock
- USER_MGR_STATUS_PW_DUPLICATE_HISTORY, // duplicate on password history
- USER_MGR_STATUS_PW_LENGTH_UNDER, // under the minimum length of password
- USER_MGR_STATUS_PW_LENGTH_OVER, // over the maximum length of password
- USER_MGR_STATUS_PW_CONT_LETTER, // continue characters or duplicate characters of password
- USER_MGR_STATUS_PW_INVALID_CHAR, // include the invalid character on password
- USER_MGR_STATUS_PW_EACH_MIN_CHAR, // not include minimum characters on password
- USER_MGR_STATUS_PW_NOT_SAME, // password error
- USER_MGR_STATUS_PW_PASSWORD_LOCK,
+ USER_MGR_STATUS_PW_DUPLICATE_HISTORY, // 8 - duplicate on password history
+ USER_MGR_STATUS_PW_LENGTH_UNDER, // 9 - under the minimum length of password
+ USER_MGR_STATUS_PW_LENGTH_OVER, // 10 - over the maximum length of password
+ USER_MGR_STATUS_PW_CONT_LETTER, // 11 - continue characters or duplicate characters of password
+ USER_MGR_STATUS_PW_INVALID_CHAR, // 12 - include the invalid character on password
+ USER_MGR_STATUS_PW_EACH_MIN_CHAR, // 13 - not include minimum characters on password
+ USER_MGR_STATUS_PW_NOT_SAME, // 14 - password error
+ USER_MGR_STATUS_PW_PASSWORD_LOCK, // 15 - Password Lock
- USER_MGR_STATUS_OTHER_OVER_PASSWORD_PERIOD, // over maximum password expire period (days)
- USER_MGR_STATUS_OTHER_OVER_ACCOUNT_PERIOD, // over maximum account expire period (days)
- USER_MGR_STATUS_OTHER_OVER_LOGIN_TIMEOUT, // over maximum auto logout time (minute)
+ USER_MGR_STATUS_OTHER_OVER_PASSWORD_PERIOD, // 16 - over maximum password expire period (days)
+ USER_MGR_STATUS_OTHER_OVER_ACCOUNT_PERIOD, // 17 - over maximum account expire period (days)
+ USER_MGR_STATUS_OTHER_OVER_LOGIN_TIMEOUT, // 18 - over maximum auto logout time (minute)
USER_MGR_STATUS_MAX,
- };
+ };
#endregion
#region Enum E_user_mgr_menu_id
@@ -192,7 +192,7 @@ namespace INT_PT002.Part11_UserManager
return dateTime;
}
- }
+ }
#endregion
#region Struct UserMgr_user_info_t
@@ -212,35 +212,41 @@ namespace INT_PT002.Part11_UserManager
public Int32 fadmin;
[MarshalAs(UnmanagedType.I4)]
- public Int32 expire_period_pw; // password lock
+ public Int32 password_expire_period; // password lock date
[MarshalAs(UnmanagedType.I4)]
- public Int32 expire_period_account; // account lock
+ public Int32 id_expire_period; // id lock date
[MarshalAs(UnmanagedType.I4)]
- public Int32 flock_status_account; // user ID (account) lock
+ public Int32 id_flock_status; // user ID (account) lock status
[MarshalAs(UnmanagedType.I4)]
- public Int32 flock_status_password; // password lock (need to change password)
+ public Int32 password_flock_status; // password lock status (need to change password)
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t register_date; // date/time when the user password was registered or changed
+ public DateTime_t password_register_date; // date/time when the user password was registered or changed
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t login_date; // date/time when the user was login
+ public DateTime_t id_login_date; // date/time when the user was login
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t expire_register_date;
+ public DateTime_t password_expire_date; // Password Expiration Date
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t expire_account_date;
+ public DateTime_t id_expire_date; // Account Expiration Date
[MarshalAs(UnmanagedType.Struct)]
- public MenuID_t menuID;
+ public MenuID_t menuID; // flag of Menu IDs
[MarshalAs(UnmanagedType.I4)]
- public Int32 active_level;
- }
+ public Int32 active_level; // menu active level : max : MAX_ACTIVE_LEVEL
+
+ [MarshalAs(UnmanagedType.I4)]
+ public Int32 fFirstPW; // [1] First (request to modify), [0] Next (not request)
+
+ [MarshalAs(UnmanagedType.I4)]
+ public Int32 login_fail_count; // [1] First (request to modify), [0] Next (not request)
+ }
#endregion
#region Struct UserMgr_user_modify_t
@@ -262,7 +268,7 @@ namespace INT_PT002.Part11_UserManager
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
- }
+ }
#endregion
#region Struct UserMgr_login_timeout_t
@@ -273,7 +279,7 @@ namespace INT_PT002.Part11_UserManager
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
- }
+ }
#endregion
#region Struct UserMgr_user_add_t
@@ -286,7 +292,7 @@ namespace INT_PT002.Part11_UserManager
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
- }
+ }
#endregion
#region Struct UserMgr_user_lock_t
@@ -298,7 +304,7 @@ namespace INT_PT002.Part11_UserManager
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_USER_ID_LENGTH)]
public string user_id;
- }
+ }
#endregion
#region Struct UserMgr_user_list_t
@@ -324,35 +330,41 @@ namespace INT_PT002.Part11_UserManager
public Int32 fadmin;
[MarshalAs(UnmanagedType.I4)]
- public Int32 expire_period_pw; // password lock
+ public Int32 password_expire_period; // password lock
[MarshalAs(UnmanagedType.I4)]
- public Int32 expire_period_account; // account lock
+ public Int32 id_expire_period; // account lock
[MarshalAs(UnmanagedType.I4)]
- public Int32 flock_status_account; // user ID (account) lock
+ public Int32 id_flock_status; // user ID (account) lock
[MarshalAs(UnmanagedType.I4)]
public Int32 flock_status_password; // password lock (need to change password)
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t register_date; // date/time when the user password was registered or changed
+ public DateTime_t password_register_date; // date/time when the user password was registered or changed
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t login_date; // date/time when the user was login
+ public DateTime_t id_login_date; // date/time when the user was login
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t expire_register_date;
+ public DateTime_t password_expire_date; // Password Expiration Date
[MarshalAs(UnmanagedType.Struct)]
- public DateTime_t expire_account_date;
+ public DateTime_t id_expire_date; // Account Expiration Date
[MarshalAs(UnmanagedType.I4)]
- public Int32 active_level;
+ public Int32 active_level; // menu active level : max : MAX_ACTIVE_LEVEL
[MarshalAs(UnmanagedType.Struct)]
- public MenuID_t menuID;
- }
+ public MenuID_t menuID; // flag of Menu IDs
+
+ [MarshalAs(UnmanagedType.I4)]
+ public Int32 fFirstPW; // flag first password
+
+ [MarshalAs(UnmanagedType.I4)]
+ public Int32 login_fail_count; // [1] First (request to modify), [0] Next (not request)
+ }
#endregion
#region Struct UserMgr_user_list_name_t
diff --git a/INT_PT002/Part11_UserManager/UserManager.cs b/INT_PT002/Part11_UserManager/UserManager.cs
index dae888e..3fe04fb 100644
--- a/INT_PT002/Part11_UserManager/UserManager.cs
+++ b/INT_PT002/Part11_UserManager/UserManager.cs
@@ -19,6 +19,7 @@ namespace INT_PT002.Part11_UserManager
public static event ObjectEventHandler UserListLoginTimeoutDataEvent;
public static event ObjectEventHandler UserListGetListDataEvent;
public static event ObjectEventHandler UserListGetListNameDataEvent;
+ public static event ObjectEventHandler UserListGetVersionDataEvent;
public delegate void IntObjectEventHandler(int status, object data);
public static event IntObjectEventHandler UserListLoginDataEvent;
@@ -28,9 +29,10 @@ namespace INT_PT002.Part11_UserManager
public static void IntializeUserManager(string folder)
{
- //Console.Write("Initialize User Manger \n");
-
// regisetr callback
+ fnUserMgrVersionCallBack = UserManager_VersionCallback;
+ DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCallBack);
+
fnUserMgrDebugCallBack = UserManager_DebugCallback;
DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCallBack);
@@ -70,86 +72,10 @@ namespace INT_PT002.Part11_UserManager
fnUsermgrGetListNameCallBack = UserManager_GetListNameCallBack;
DLL_UserMgr_Register_GetListNameCB(fnUsermgrGetListNameCallBack);
- // call the function
- //DLL_UserMgr_HelloWorld();
-
DLL_UserMgr_Activation();
IntPtr pFolder = Marshal.StringToBSTR(folder);
DLL_UserMgr_SetFolder(pFolder);
-
- // Test Only
- //TestUserListData();
- }
- public static void TestUserListData()
- {
- DateTime_t regDateTime = new DateTime_t();
- regDateTime.SetDate(2021, 10, 1);
- regDateTime.SetTime(10, 11, 12);
-
-
- DateTime_t loginDateTime = new DateTime_t();
- loginDateTime.SetDate(2021, 9, 1);
- loginDateTime.SetTime(10, 21, 12);
-
- UserManager_UserAdd("Intech", "test12#$", 1, 90, 90, 1, regDateTime, loginDateTime);
- UserManager_UserAdd("Admin00", "test12#$", 1, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 2);
- UserManager_UserAdd("Test101", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 3);
- UserManager_UserAdd("Test102", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 4);
- UserManager_UserAdd("Test103", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 5);
- UserManager_UserAdd("Test104", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 6);
- UserManager_UserAdd("Test105", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test123", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test321", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("ABC001", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("CBA001", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("AAA001", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test000", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test105", "test12#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test106", "test12", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test107", "test#$", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- regDateTime.SetDate(2021, 10, 7);
- UserManager_UserAdd("Test108", "1223#$%", 0, 90, 90, 1, regDateTime, loginDateTime);
-
- //UserManager_UserNew("Test200", "test12#$", 0, 20, 30);
-
- DLL_UserMgr_GetUserListID(IntPtr.Zero);
- }
- public static void DeinitializeUserManger()
- {
- DLL_UserMgr_Register_DebugCB(null);
- DLL_UserMgr_Register_NewStatusCB(null);
-
- DLL_UserMgr_Deactivation();
}
#region UM_FUNCTION
@@ -210,6 +136,29 @@ namespace INT_PT002.Part11_UserManager
DLL_UserMgr_UserModifyPW(pID, pPW);
}
+ public static int UserManager_UserModifyPWDirect(String sID, String sNewPW)
+ {
+ int ret = 0;
+
+ IntPtr pID = Marshal.StringToBSTR(sID.ToString());
+ IntPtr pPW = Marshal.StringToBSTR(sNewPW.ToString());
+
+ ret = DLL_UserMgr_UserModifyPWDirect(pID, pPW);
+
+ return ret;
+ }
+ public static int UserManager_UserResetPWDirect(String sID, String sNewPW)
+ {
+ int ret = 0;
+
+ IntPtr pID = Marshal.StringToBSTR(sID.ToString());
+ IntPtr pPW = Marshal.StringToBSTR(sNewPW.ToString());
+
+ ret = DLL_UserMgr_UserResetPWDirect(pID, pPW);
+
+ return ret;
+ }
+
public static void UserManager_UserModifyID(String sID, String sNewID)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
@@ -245,6 +194,12 @@ namespace INT_PT002.Part11_UserManager
DLL_UserMgr_UserLockGet(pID);
}
+ public static void UserManager_UserLoginFailLockSet(String sID)
+ {
+ IntPtr pID = Marshal.StringToBSTR(sID.ToString());
+
+ DLL_UserMgr_UserLoginFailLockSet(pID);
+ }
public static void UserManager_UserLoginCB(String sID, String sPW)
{
IntPtr pID = Marshal.StringToBSTR(sID.ToString());
@@ -289,6 +244,10 @@ namespace INT_PT002.Part11_UserManager
{
DLL_UserMgr_GetUserListName();
}
+ public static void UserManager_GetVersion()
+ {
+ DLL_UserMgr_Getversion();
+ }
#endregion
#region UM_CALLBACK
@@ -301,7 +260,7 @@ namespace INT_PT002.Part11_UserManager
}
catch
{
- }
+ }
}
private static void UserManager_GetListCallBack(ref UserMgr_user_list_t user_list)
{
@@ -333,7 +292,7 @@ namespace INT_PT002.Part11_UserManager
UserListLogoutDataEvent(status);
}
- catch
+ catch
{
}
}
@@ -355,7 +314,7 @@ namespace INT_PT002.Part11_UserManager
if (UserListLockDataEvent != null)
UserListLockDataEvent(user_lock);
}
- catch
+ catch
{
}
}
@@ -366,7 +325,7 @@ namespace INT_PT002.Part11_UserManager
if (UserListDefautSettingDataEvent != null)
UserListDefautSettingDataEvent(status);
}
- catch
+ catch
{
}
}
@@ -410,7 +369,7 @@ namespace INT_PT002.Part11_UserManager
if (UserListAddDataEvent != null)
UserListAddDataEvent(user_add);
}
- catch
+ catch
{
}
}
@@ -435,10 +394,22 @@ namespace INT_PT002.Part11_UserManager
try
{
}
- catch
+ catch
{
}
}
+ private static void UserManager_VersionCallback(StringBuilder version)
+ {
+ try
+ {
+ if (UserListGetVersionDataEvent != null)
+ UserListGetVersionDataEvent(version);
+ }
+ catch
+ {
+
+ }
+ }
#endregion
}
}
diff --git a/INT_PT002/Program.cs b/INT_PT002/Program.cs
index 1df0904..4304c4d 100644
--- a/INT_PT002/Program.cs
+++ b/INT_PT002/Program.cs
@@ -22,10 +22,9 @@ namespace INT_PT002
}
catch (Exception ex)
{
- FormMain.Exception(ex);
+ MessageBox.Show(ex.ToString());
- DialogFormMessage myMsg = new DialogFormMessage(1);
- myMsg.ShowDialog();
+ FormMain.Exception(ex);
}
}
}