Files
egtbeamwall/EgtBEAMWALL.Core/Utility/BTLIniFile.vb
T

218 lines
9.9 KiB
VB.net

'----------------------------------------------------------------------------
' EgalTech 2017-2017
'----------------------------------------------------------------------------
' File : IniFile.vb Data : 08.04.17 Versione : 1.8d1
' Contenuto : Modulo IniFile per gestione lettura/scrittura da file INI.
'
'
'
' Modifiche : 08.04.17 ES Creazione modulo.
'
'
'----------------------------------------------------------------------------
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports EgtWPFLib5
Public Module BTLIniFile
Public m_sBTLIniFile As String
Public m_nBTLBWType As BWType
Public Function GetBeamPrivateProfileProcessList(IpGRPType As GRPType, ByRef IpProcessList As ObservableCollection(Of Integer)) As Boolean
Dim PRCList As New ObservableCollection(Of Integer)
Dim sProcess As String = String.Empty
If EgtUILib.GetPrivateProfileString(PROCESSINGS, IpGRPType, String.Empty, sProcess, m_sBTLIniFile) > 0 Then
Dim sProcesses() As String = sProcess.Split(","c)
' verifico ce ne sia almeno uno
If sProcesses.Count >= 0 Then
' cancello spazi
For Index = 0 To sProcesses.Count - 1
sProcesses(Index) = sProcesses(Index).Trim()
Dim nProcess As Integer
Integer.TryParse(sProcesses(Index), nProcess)
PRCList.Add(nProcess)
Next
IpProcessList = PRCList
Return True
End If
End If
Return False
End Function
Public Function GetBeamPrivateProfileGRPList(IpGRP As Integer, IpPRC As Integer, ByRef IpGRPList As ObservableCollection(Of Integer)) As Boolean
IpGRPList.Clear()
' ciclo sui tipi di gruppo
Dim sBTLGroup As String = String.Empty
If EgtUILib.GetPrivateProfileString(IpGRP & "." & IpPRC, BTL_FTR_GRP, String.Empty, sBTLGroup, m_sBTLIniFile) > 0 Then
Dim sBTLGroups() As String = sBTLGroup.Split(","c)
' verifico numero minimo di parametri
If sBTLGroups.Count >= 0 Then
' cancello spazi
For Index = 0 To sBTLGroups.Count - 1
sBTLGroups(Index) = sBTLGroups(Index).Trim()
Next
' creo parametro
For Each Group In sBTLGroups
Dim nGroup As Integer = -1
Integer.TryParse(Group, nGroup)
If IpGRP = GRPType.L And (nGroup = 0 OrElse nGroup = 3 OrElse nGroup = 4) Then
IpGRPList.Add(nGroup)
ElseIf IpGRP = GRPType.T And (nGroup = 1 OrElse nGroup = 2) Then
IpGRPList.Add(nGroup)
End If
Next
End If
End If
Return IpGRPList.Count > 0
End Function
Public Function CalcBeamPrivateProfileGRP(nGRP As Integer) As Integer
If nGRP = 1 Or nGRP = 2 Then
Return 1
ElseIf nGRP = 0 Or nGRP = 3 Or nGRP = 4 Then
Return 0
Else
Return nGRP
End If
End Function
Public Function GetBeamPrivateProfileName(IpGRP As Integer, IpPRC As Integer, ByRef IpBTLFeature As BTLFeatureM) As Boolean
Dim sBTLName As String = String.Empty
' creo lista GRP e leggo nome
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & IpPRC, BTL_FTR_NAME, String.Empty, sBTLName, m_sBTLIniFile) > 0 Then
' verifico numero minimo di parametri
If Not String.IsNullOrEmpty(sBTLName) Then
Dim nNameMsg As Integer
Integer.TryParse(sBTLName, nNameMsg)
IpBTLFeature.SetName(EgtMsg(nNameMsg))
Return True
End If
End If
Return False
End Function
Public Function GetBeamPrivateProfileName(IpGRP As Integer, IpPRC As Integer) As String
Dim sBTLName As String = String.Empty
' creo lista GRP e leggo nome
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & IpPRC, BTL_FTR_NAME, String.Empty, sBTLName, m_sBTLIniFile) > 0 Then
' verifico numero minimo di parametri
If Not String.IsNullOrEmpty(sBTLName) Then
Dim nNameMsg As Integer
Integer.TryParse(sBTLName, nNameMsg)
Return EgtMsg(nNameMsg)
Return True
End If
End If
Return ""
End Function
' funzione che ottiene il parametro P/Q usando m_nBTLBWType del modulo
Public Function GetBeamPrivateProfileParam(IpGRP As Integer, IpPRC As Integer, IpVariant As Integer, IsP As Boolean, IpFeatureParamIndex As String, IpParentFeature As BTLFeatureM, ByRef IpBTLParam As BTLParamM) As Boolean
Dim sBTLParam As String = String.Empty
Dim sBWQParam As String = String.Empty
If m_nBTLBWType = BWType.BEAM Then
sBWQParam = "B"
ElseIf m_nBTLBWType = BWType.WALL Then
sBWQParam = "W"
End If
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & If(IpPRC = 900 AndAlso IpVariant > 0, IpPRC & "." & IpVariant, IpPRC), If(IsP, "P", "Q" & sBWQParam) & IpFeatureParamIndex, String.Empty, sBTLParam, m_sBTLIniFile) > 0 Then
Dim sBTLParamParams() As String = sBTLParam.Split(","c)
' verifico numero minimo di parametri
If sBTLParamParams.Count >= 6 Then
' cancello spazi
For Index = 0 To sBTLParamParams.Count - 1
sBTLParamParams(Index) = sBTLParamParams(Index).Trim()
Next
' creo parametro
If sBTLParamParams(0) = "d" OrElse sBTLParamParams(0) = "l" Then
Dim dMin As Double
Dim dMax As Double
Dim dDefault As Double
StringToDoubleAdv(sBTLParamParams(2), dMin)
StringToDoubleAdv(sBTLParamParams(3), dMax)
StringToDoubleAdv(sBTLParamParams(4), dDefault)
Dim ParamType As BTLParamType
If sBTLParamParams(0) = "d" Then
ParamType = BTLParamType.DOUBLE_
Else
ParamType = BTLParamType.LENGTH
End If
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, ParamType, sBTLParamParams(1), dMin, dMax, dDefault, sBTLParamParams(5))
Return Not IsNothing(IpBTLParam)
ElseIf sBTLParamParams(0) = "s" Then
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, BTLParamType.STRING_, sBTLParamParams(1), sBTLParamParams(4), sBTLParamParams(5))
Return Not IsNothing(IpBTLParam)
ElseIf sBTLParamParams(0) = "c" Then
Dim nMin As Integer
Dim nMax As Integer
Dim nDefault As Integer
Integer.TryParse(sBTLParamParams(2), nMin)
Integer.TryParse(sBTLParamParams(3), nMax)
Integer.TryParse(sBTLParamParams(4), nDefault)
' recupero lista valori
Dim ValueList As New List(Of String)
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, BTLParamType.COMBO, sBTLParamParams(1), nMin, nMax, nDefault, sBTLParamParams(5), ValueList)
Return Not IsNothing(IpBTLParam)
End If
End If
End If
Return False
End Function
' funzione che ottiene il parametro P/Q usando BTLBWType passato come argomento
Public Function GetBeamPrivateProfileParam(IpGRP As Integer, IpPRC As Integer, IsP As Boolean, IpFeatureParamIndex As String, IpParentFeature As BTLFeatureM, ByRef IpBTLParam As BTLParamM, BTLBWType As BWType) As Boolean
Dim sBTLParam As String = String.Empty
Dim sBWQParam As String = String.Empty
If BTLBWType = BWType.BEAM Then
sBWQParam = "B"
ElseIf BTLBWType = BWType.WALL Then
sBWQParam = "W"
End If
If EgtUILib.GetPrivateProfileString(CalcBeamPrivateProfileGRP(IpGRP) & "." & IpPRC, If(IsP, "P", "Q" & sBWQParam) & IpFeatureParamIndex, String.Empty, sBTLParam, m_sBTLIniFile) > 0 Then
Dim sBTLParamParams() As String = sBTLParam.Split(","c)
' verifico numero minimo di parametri
If sBTLParamParams.Count >= 6 Then
' cancello spazi
For Index = 0 To sBTLParamParams.Count - 1
sBTLParamParams(Index) = sBTLParamParams(Index).Trim()
Next
' creo parametro
If sBTLParamParams(0) = "d" OrElse sBTLParamParams(0) = "l" Then
Dim dMin As Double
Dim dMax As Double
Dim dDefault As Double
StringToDoubleAdv(sBTLParamParams(2), dMin)
StringToDoubleAdv(sBTLParamParams(3), dMax)
StringToDoubleAdv(sBTLParamParams(4), dDefault)
Dim ParamType As BTLParamType
If sBTLParamParams(0) = "d" Then
ParamType = BTLParamType.DOUBLE_
Else
ParamType = BTLParamType.LENGTH
End If
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, ParamType, sBTLParamParams(1), dMin, dMax, dDefault, sBTLParamParams(5), sBWQParam)
Return Not IsNothing(IpBTLParam)
ElseIf sBTLParamParams(0) = "s" Then
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, BTLParamType.STRING_, sBTLParamParams(1), sBTLParamParams(4), sBTLParamParams(5), sBWQParam)
Return Not IsNothing(IpBTLParam)
ElseIf sBTLParamParams(0) = "c" Then
Dim nMin As Integer
Dim nMax As Integer
Dim nDefault As Integer
Integer.TryParse(sBTLParamParams(2), nMin)
Integer.TryParse(sBTLParamParams(3), nMax)
Integer.TryParse(sBTLParamParams(4), nDefault)
' recupero lista valori
Dim ValueList As New List(Of String)
IpBTLParam = BTLParamM.CreateBTLParam(IpParentFeature, IsP, BTLParamType.COMBO, sBTLParamParams(1), nMin, nMax, nDefault, sBTLParamParams(5), ValueList, sBWQParam)
Return Not IsNothing(IpBTLParam)
End If
End If
End If
Return False
End Function
End Module