322 lines
9.9 KiB
VB.net
322 lines
9.9 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
|
|
Public Class ConfigurationPageVM
|
|
|
|
' flag modifica parametri Macchina
|
|
Friend bModifyMachParam As Boolean
|
|
|
|
' Definizione comandi
|
|
Private m_cmdSave As ICommand
|
|
|
|
Private m_ConfigMachTableList As New ObservableCollection(Of MachTable)
|
|
Public Property ConfigMachTableList As ObservableCollection(Of MachTable)
|
|
Get
|
|
Return m_ConfigMachTableList
|
|
End Get
|
|
Set(value As ObservableCollection(Of MachTable))
|
|
m_ConfigMachTableList = value
|
|
End Set
|
|
End Property
|
|
|
|
#Region "Constuctor"
|
|
|
|
Sub New()
|
|
' imposto riferimento in Map
|
|
Map.SetRefConfigurationPageVM(Me)
|
|
' assegno le liste dei parametri della macchina corrente alla ConfigMachTableList alla pagina di Configurazione
|
|
ConfigMachTableList = CurrentMachine.MachTableList
|
|
End Sub
|
|
|
|
#End Region ' Constuctor
|
|
|
|
#Region "SaveCommand"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do Save.
|
|
''' </summary>
|
|
Public ReadOnly Property SaveCommand As ICommand
|
|
Get
|
|
If m_cmdSave Is Nothing Then
|
|
m_cmdSave = New Command(AddressOf Save)
|
|
End If
|
|
Return m_cmdSave
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the Save. This method is invoked by the SaveCommand.
|
|
''' </summary>
|
|
Public Sub Save()
|
|
WriteMachParams()
|
|
End Sub
|
|
|
|
#End Region ' SaveCommand
|
|
|
|
#Region "Methods"
|
|
|
|
' funzione che scrive i parametri modificati sul file INI
|
|
Public Sub WriteMachParams()
|
|
For Each MachTableItem In ConfigMachTableList
|
|
For Each MachParamItem In MachTableItem.MachParamList
|
|
If MachParamItem.IsModified Then
|
|
Dim sMachParamType As String = String.Empty
|
|
Select Case MachParamItem.nType
|
|
Case MachParamType.DOUBLE_
|
|
sMachParamType = "d"
|
|
Case MachParamType.STRING_
|
|
sMachParamType = "s"
|
|
Case MachParamType.LENGTH
|
|
sMachParamType = "l"
|
|
End Select
|
|
Dim MachParamString As String = sMachParamType & "," & MachParamItem.sName & "," & MachParamItem.sValue & "," & MachParamItem.sDescription
|
|
Dim bOk = WriteMachPrivateProfileString(MachParamItem.nParentTable, MachParamItem.nParamIndex, MachParamString)
|
|
If Not bOk Then
|
|
MessageBox.Show("Errore nella scrittura di un parametro Macchina", "Error")
|
|
Return
|
|
End If
|
|
MachParamItem.IsModifiedReset()
|
|
End If
|
|
Next
|
|
Next
|
|
End Sub
|
|
|
|
' funzione che verifica la modifica dei parametri e ne chiede il salvataggio
|
|
Friend Function VerifyConfigPageModification() As Boolean
|
|
For Each MachTableItem In ConfigMachTableList
|
|
For Each MachParamItem In MachTableItem.MachParamList
|
|
If MachParamItem.IsModified Then
|
|
If MessageBox.Show("Salvare le modifiche apportate ai parametri Macchina?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
' salvo parametri Macchina
|
|
Save()
|
|
Else
|
|
' se da non salvare
|
|
CreateMachParams()
|
|
Return False
|
|
End If
|
|
End If
|
|
Next
|
|
Next
|
|
Return True
|
|
End Function
|
|
|
|
' funzione che verifica l'inserimento della password quando si edita un parametro Macchina
|
|
Friend Function VerifyConfigPagePassword() As Boolean
|
|
' Display message, title, and default value.
|
|
Dim sPwdInput = InputBox("Inserire Password: ", "Richiesta Pwd")
|
|
' Lettura PWD dall'INI e confronto
|
|
Dim sPwdIni As String = String.Empty
|
|
If GetMainPrivateProfileString(S_MACH, K_PASSWORD, "", sPwdIni) <> 0 Then
|
|
If sPwdIni = sPwdInput Then Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
#End Region ' Methods
|
|
|
|
End Class
|
|
|
|
Public Class MachParam
|
|
Inherits VMBase
|
|
|
|
' table a cui appartiene il parametro
|
|
Private m_nParentTable As Integer
|
|
Friend ReadOnly Property nParentTable As Integer
|
|
Get
|
|
Return m_nParentTable
|
|
End Get
|
|
End Property
|
|
|
|
' indice del parametro
|
|
Private m_nParamIndex As Integer
|
|
Friend ReadOnly Property nParamIndex As Integer
|
|
Get
|
|
Return m_nParamIndex
|
|
End Get
|
|
End Property
|
|
|
|
' tipo della variabile
|
|
Private m_nType As MachParamType
|
|
Friend ReadOnly Property nType As MachParamType
|
|
Get
|
|
Return m_nType
|
|
End Get
|
|
End Property
|
|
|
|
' parametri da struttura
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
' parametri da geometria
|
|
Private m_IsModifiedValue As Boolean = False
|
|
Private m_dValue As Double
|
|
Private m_sValue As String
|
|
Public Property sValue As String
|
|
Get
|
|
Select Case nType
|
|
Case MachParamType.DOUBLE_
|
|
Return DoubleToString(m_dValue, 3)
|
|
Case MachParamType.LENGTH
|
|
Return LenToString(m_dValue, 3)
|
|
Case Else ' stringhe
|
|
Return m_sValue
|
|
End Select
|
|
Return If(nType = MachParamType.LENGTH, LenToString(m_dValue, 3), DoubleToString(m_dValue, 3))
|
|
End Get
|
|
Set(value As String)
|
|
Dim dNewValue As Double
|
|
' verifico se valore immesso è diverso dall'originale
|
|
If nParentTable > 0 Then
|
|
Dim sOrigValue As String = String.Empty
|
|
Dim dOrigValue As Double
|
|
MachParamIniFile.GetMachPrivateProfileParamValue(nParentTable, nParamIndex, sOrigValue)
|
|
' trasformo valori
|
|
Select Case nType
|
|
Case MachParamType.DOUBLE_
|
|
StringToDouble(value, dNewValue)
|
|
StringToDouble(sOrigValue, dOrigValue)
|
|
Case MachParamType.LENGTH
|
|
StringToLen(value, dNewValue)
|
|
StringToLen(sOrigValue, dOrigValue)
|
|
Case Else
|
|
' per string non faccio nulla
|
|
End Select
|
|
m_IsModifiedValue = dNewValue <> dOrigValue
|
|
End If
|
|
' se valore immesso è diverso e password non inserita
|
|
If m_IsModifiedValue AndAlso Not Map.refConfigurationPageVM.bModifyMachParam Then
|
|
Map.refConfigurationPageVM.bModifyMachParam = Map.refConfigurationPageVM.VerifyConfigPagePassword()
|
|
If Not Map.refConfigurationPageVM.bModifyMachParam Then
|
|
NotifyPropertyChanged("sValue")
|
|
m_IsModifiedValue = False
|
|
Return
|
|
End If
|
|
End If
|
|
|
|
Select Case nType
|
|
Case MachParamType.DOUBLE_, MachParamType.LENGTH
|
|
UpdateParamValue(dNewValue, "")
|
|
Case Else
|
|
UpdateParamValue(0, value)
|
|
End Select
|
|
End Set
|
|
End Property
|
|
Public Property dValue As Double
|
|
Get
|
|
Return m_dValue
|
|
End Get
|
|
Set(value As Double)
|
|
m_dValue = value
|
|
NotifyPropertyChanged("sValue")
|
|
End Set
|
|
End Property
|
|
|
|
' descrizione del parametro
|
|
Private m_sDescription As String
|
|
Public Property sDescription As String
|
|
Get
|
|
Return m_sDescription
|
|
End Get
|
|
Set(value As String)
|
|
m_sDescription = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Sub StdInit(nParentTable As Integer, nParamIndex As Integer, Type As MachParamType, sName As String, sDescription As String)
|
|
m_nParentTable = nParentTable
|
|
m_nParamIndex = nParamIndex
|
|
m_nType = Type
|
|
m_sName = sName
|
|
Dim nDescription As Integer
|
|
If IsNumeric(sDescription) AndAlso Integer.TryParse(sDescription, nDescription) Then
|
|
m_sDescription = EgtMsg(sDescription)
|
|
Else
|
|
m_sDescription = sDescription
|
|
End If
|
|
End Sub
|
|
|
|
' new per double e length
|
|
Sub New(nParentTable As Integer, nParamIndex As Integer, nType As MachParamType, sParamName As String, dValue As Double, sDescription As String)
|
|
StdInit(nParentTable, nParamIndex, nType, sParamName, sDescription)
|
|
m_dValue = dValue 'sValue = DoubleToString(dValue, 3)
|
|
End Sub
|
|
|
|
' new per stringhe
|
|
Sub New(nParentTable As Integer, nParamIndex As Integer, nType As MachParamType, sParamName As String, sDescription As String)
|
|
StdInit(nParentTable, nParamIndex, nType, sParamName, sDescription)
|
|
End Sub
|
|
|
|
' new per parametro vuoto
|
|
Sub New(nType As MachParamType, nParamIndex As Integer, sParamName As String)
|
|
StdInit(Nothing, nParamIndex, nType, sParamName, "")
|
|
End Sub
|
|
|
|
Friend Sub UpdateParamValue(dNewValue As Double, sNewValue As String, Optional bDraw As Boolean = True)
|
|
Select Case nType
|
|
Case MachParamType.DOUBLE_, MachParamType.LENGTH
|
|
m_dValue = dNewValue
|
|
Case MachParamType.STRING_
|
|
m_sValue = sNewValue
|
|
End Select
|
|
End Sub
|
|
|
|
Public ReadOnly Property IsModified() As Boolean
|
|
Get
|
|
Return m_IsModifiedValue
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub IsModifiedReset()
|
|
m_IsModifiedValue = False
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public Class MachTable
|
|
Inherits VMBase
|
|
|
|
' nome della table
|
|
Private m_sName As String
|
|
Public Property sName As String
|
|
Get
|
|
Return m_sName
|
|
End Get
|
|
Set(value As String)
|
|
m_sName = value
|
|
End Set
|
|
End Property
|
|
|
|
Private m_MachParamList As New ObservableCollection(Of MachParam)
|
|
Public Property MachParamList As ObservableCollection(Of MachParam)
|
|
Get
|
|
Return m_MachParamList
|
|
End Get
|
|
Set(value As ObservableCollection(Of MachParam))
|
|
m_MachParamList = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(Name As String, ParamList As ObservableCollection(Of MachParam))
|
|
sName = Name
|
|
MachParamList = ParamList
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
' Tipo parametro nel file di configurazione Macchina
|
|
Public Enum MachParamType As Integer
|
|
DOUBLE_ = 1
|
|
STRING_ = 2
|
|
COMBO = 3
|
|
LENGTH = 4
|
|
CHECKBOX = 5
|
|
End Enum
|