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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 + 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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 - 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); } } }