This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/UTS_Core/UTSModule/Station/DlgLoadStation.vb

179 lines
7.1 KiB
VB.net
Raw Normal View History

2024-03-11 16:32:52 +08:00
Imports System.Drawing
Imports System.Windows.Forms
Imports UTS_Core.UTSModule.Project
Namespace UTSModule.Station
Public Class DlgLoadStation
Public Property ProcessStation() As ProcessStation
2024-03-11 16:32:52 +08:00
Public Property UserInfo() As Login.UserInfo
Public _projectInfo As ProjectInfo
Private _projectName As String
Private _stationName As String
Private _stationType As ProcessStation.StationTypeEnum
Private _snIndex As New Dictionary(Of Integer, Integer)
Public Function InitProjectStationWithoutShow(projectName As String, stationName As String) As Boolean
Dim projectList As String() = ProjectInfo.LoadProjectList(ProjectInfo.InitializeModeEnum.LocalDatabaseLoad)
If projectList.Contains(projectName) = False Then Return False
_projectInfo = New ProjectInfo(UserInfo.UserId, UserInfo.UserName, projectName, ProjectInfo.InitializeModeEnum.LocalDatabaseLoad)
2024-03-11 16:32:52 +08:00
For Each projectStationInfo As ProcessStation In _projectInfo.Station
If projectStationInfo.Name = stationName Then
ProcessStation = projectStationInfo
ProcessStation.UserId = UserInfo.UserId
Exit For
End If
Next
Return ProcessStation IsNot Nothing
End Function
Public Overloads Function ShowDialog(projectName As String, stationName As String, Optional stationType As ProcessStation.StationTypeEnum = ProcessStation.StationTypeEnum.Test) As DialogResult
_projectName = projectName
_stationName = stationName
_stationType = stationType
Return Me.ShowDialog
End Function
Private Sub OK_Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OK_Button.Click
DialogResult = DialogResult.OK
Close()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Cancel_Button.Click
DialogResult = DialogResult.Cancel
Close()
End Sub
Private Sub InitPreviewImage()
PicStationPreview.SizeMode = PictureBoxSizeMode.Zoom
End Sub
Private Sub InitializeForm()
Text = $"请选择需要加载的项目"
End Sub
Private Sub DlgLoadStation_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitializeForm()
InitPreviewImage()
UpdateProjectList()
End Sub
Private Sub UpdateProjectList()
CboProject.Items.Clear()
CboProject.Items.AddRange(ProjectInfo.LoadProjectList(ProjectInfo.InitializeModeEnum.LocalDatabaseLoad))
If String.IsNullOrEmpty(_projectName) = False Then
For i As Integer = 0 To CboProject.Items.Count - 1
If CboProject.Items(i).ToString() = _projectName Then
CboProject.SelectedIndex = i
Exit For
End If
Next
Else
If CboProject.Items.Count > 0 Then CboProject.SelectedIndex = 0
End If
End Sub
Private Sub UpdateProjectStation(stations As List(Of ProcessStation))
_snIndex.Clear()
CboStation.Items.Clear()
Dim index As Integer = -1
For Each station As ProcessStation In stations
index += 1
If station.StationType <> _stationType Then Continue For
_snIndex.Add(CboStation.Items.Count, index)
CboStation.Items.Add(station.Name)
Next
CboPacket.Items.Clear()
2024-03-11 16:32:52 +08:00
'添加所有站位描述
RtxStationDesc.SuspendLayout()
RtxStationDesc.Clear()
For Each station As ProcessStation In stations
If station.StationType <> _stationType Then
RtxStationDesc.SelectionColor = Color.Gray
Else
RtxStationDesc.SelectionColor = Color.Black
End If
RtxStationDesc.AppendText($"{station.Name}:{station.Description}{vbNewLine}")
Next
RtxStationDesc.ResumeLayout(False)
RtxStationDesc.PerformLayout()
'默认选择
If String.IsNullOrEmpty(_stationName) = False Then
For i As Integer = 0 To CboStation.Items.Count - 1
If CboStation.Items(i).ToString() = _stationName Then
CboStation.SelectedIndex = i
Exit For
End If
Next
End If
If CboStation.SelectedIndex = -1 AndAlso _snIndex.Count > 0 Then CboStation.SelectedIndex = _snIndex.Keys.ElementAt(0)
End Sub
Private Sub CboProject_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboProject.SelectedIndexChanged
_projectInfo = New ProjectInfo(UserInfo.UserId, UserInfo.UserName, CboProject.Text, ProjectInfo.InitializeModeEnum.LocalDatabaseLoad)
2024-03-11 16:32:52 +08:00
RtxProjectDesc.Text = _projectInfo.Description
If _projectInfo.MasterImage IsNot Nothing Then
PicStationPreview.Image = _projectInfo.MasterImage
End If
lastSelectIndex = -1
UpdateProjectStation(_projectInfo.Station)
End Sub
Private lastSelectIndex As Integer = -1
Private _packetList As List(Of StationPacketVo)
2024-03-11 16:32:52 +08:00
Private Sub CboStation_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboStation.SelectedIndexChanged
Dim selectIndex As Integer = _snIndex(CboStation.SelectedIndex)
ProcessStation = _projectInfo.Station.Item(selectIndex)
ProcessStation.UserId = UserInfo.UserId
If lastSelectIndex <> -1 Then
RtxStationDesc.Select(RtxStationDesc.GetFirstCharIndexFromLine(lastSelectIndex), RtxStationDesc.Lines(lastSelectIndex).Length)
RtxStationDesc.SelectionColor = Color.Black
End If
lastSelectIndex = selectIndex
RtxStationDesc.Select(RtxStationDesc.GetFirstCharIndexFromLine(selectIndex), RtxStationDesc.Lines(selectIndex).Length)
RtxStationDesc.SelectionColor = Color.Blue
'获取pid和sid
Dim pid As Integer = _projectInfo.Index
Dim sid As Integer = ProcessStation.StationID
'获取对应站位所有包,倒序添加
_packetList = _projectInfo.LoadLocalDbStationPackets(pid, sid)
CboPacket.Items.Clear()
For Each packet As StationPacketVo In _packetList
CboPacket.Items.Add(packet.PacketName)
Next
If CboPacket.Items.Count > 0 Then CboPacket.SelectedIndex = 0
2024-03-11 16:32:52 +08:00
End Sub
Private Sub CboPacket_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboPacket.SelectedIndexChanged
ProcessStation.Packet.FileName = _packetList(CboPacket.SelectedIndex).PacketName
ProcessStation.Packet.PacketMD5 = _packetList(CboPacket.SelectedIndex).PacketMd5
End Sub
2024-03-11 16:32:52 +08:00
End Class
End Namespace