Files
EgtDOORCreator/HardwareGeometry/GeometryListConfigVM.vb
T
Nicola Pievani cbecb11ab7 EgtDOORCreato 2.2e1:
-> scrittura messaggi nel file dei messaggi.
2020-06-05 10:50:02 +00:00

255 lines
7.9 KiB
VB.net

Imports System.ComponentModel
Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class GeometryListConfigVM
Inherits VMBase
Dim m_HardwareTemp As Hardware
#Region "MESSAGES"
Public ReadOnly Property Title As String
Get
' 50721=New Geometry
Return EgtMsg(50721)
End Get
End Property
Public ReadOnly Property GeometryNameMsg As String
Get
' 50722=Geometry Name
Return EgtMsg(50722)
End Get
End Property
Public ReadOnly Property TypeHardwareMsg As String
Get
' 50723=Type Hardware
Return EgtMsg(50723)
End Get
End Property
Public ReadOnly Property ParameterMsg As String
Get
' 50724=Parameter
Return EgtMsg(50724)
End Get
End Property
Public ReadOnly Property SaveMsg As String
Get
' 50410=Save
Return EgtMsg(50410)
End Get
End Property
#End Region ' Messages
#Region "GEOMETRY NAME"
Private m_GeometryName As String = "Geometry"
Public Property GeometryName As String
Get
Return m_GeometryName
End Get
Set(value As String)
m_GeometryName = Trim(value)
NotifyPropertyChanged("GeometryName")
End Set
End Property
Private m_GeometryNameList As New ObservableCollection(Of String)
Public Property GeometryNameList As ObservableCollection(Of String)
Get
Return m_GeometryNameList
End Get
Set(value As ObservableCollection(Of String))
m_GeometryNameList = value
End Set
End Property
#End Region ' Geommetry Name
#Region "HARDWARE LIST"
Private m_HardwareList As New ObservableCollection(Of CompoType)
Private m_SelHardware As CompoType
Private m_GraphicHardwareList As New ObservableCollection(Of String)
Public Property GraphicHardwareList As ObservableCollection(Of String)
Get
Return m_GraphicHardwareList
End Get
Set(value As ObservableCollection(Of String))
m_GraphicHardwareList = value
NotifyPropertyChanged("GraphicHardwareList")
End Set
End Property
Private m_SelGraphicHardware As String
Public Property SelGraphicHardware As String
Get
Return m_SelGraphicHardware
End Get
Set(value As String)
m_SelGraphicHardware = value
For Each Item In m_HardwareList
If Item.Name = m_SelGraphicHardware Then
m_SelHArdware = Item
Exit For
End If
Next
LoadParamBySelecetedHardware()
NotifyPropertyChanged("SelGraphicHardware")
End Set
End Property
#End Region ' Hardware List
#Region "PARAMETER LIST"
Private m_Parameter As CompoParam
Private m_ParameterList As New ObservableCollection(Of String)
Public Property ParameterList As ObservableCollection(Of String)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of String))
m_ParameterList = value
NotifyPropertyChanged("ParameterList")
End Set
End Property
Private m_SelParameter As String
Public Property SelParameter As String
Get
Return m_SelParameter
End Get
Set(value As String)
m_SelParameter = value
LoadCurrParam(m_HardwareTemp, m_SelParameter)
NotifyPropertyChanged("SelParameter")
End Set
End Property
#End Region ' Parameter List
#Region "METODI"
Public Function LoadNameComboBoxLua(LocalHardware As Hardware, ParamName As String) As Boolean
' prima di ricaricare la lista deve essere svuotata
ParameterList.Clear()
For Each Chapter In LocalHardware.GroupChapters
For Each Parameter In Chapter.CompoParamList
If TypeOf Parameter Is ComboBoxParamLua Then
Dim Text As ComboBoxParamLua = DirectCast(Parameter, ComboBoxParamLua)
ParameterList.Add(Text.Name)
If ParamName = Text.DDFName Then
SelParameter = ParameterList(ParameterList.Count - 1)
m_Parameter = Parameter
End If
End If
Next
Next
If String.IsNullOrEmpty(ParamName) And ParameterList.Count > 0 Then
SelParameter = ParameterList(0)
End If
Return True
End Function
Public Function LoadCurrParam(LocalHardware As Hardware, SelParam As String) As Boolean
For Each Chapter In LocalHardware.GroupChapters
For Each Parameter In Chapter.CompoParamList
If TypeOf Parameter Is ComboBoxParamLua Then
Dim Text As ComboBoxParamLua = DirectCast(Parameter, ComboBoxParamLua)
If SelParam = Text.Name Then
m_Parameter = Parameter
End If
End If
Next
Next
Return True
End Function
Public Function LoadParamBySelecetedHardware() As Boolean
' creo un HardwareTemporaneo per leggere le sue componenti
m_HardwareTemp = New Hardware
m_HardwareTemp.LoadTemplate(m_SelHardware)
LoadNameComboBoxLua(m_HardwareTemp, "")
HardwareTemp = Nothing
Return True
End Function
#End Region
Private m_CmdSave As ICommand
#Region "SAVE"
Public ReadOnly Property SaveCommand As ICommand
Get
If m_CmdSave Is Nothing Then
m_CmdSave = New Command(AddressOf SaveGeometryName)
End If
Return m_CmdSave
End Get
End Property
Public Sub SaveGeometryName(param As Object)
Dim sGeometry As String = String.Empty
Dim sName As String = String.Empty
Dim Index As Integer = 1
Dim bNameExists As Boolean = False
While IniFile.GetGeometryNameList("GeometryNames", CStr(Index), sName)
If m_GeometryName = sName Then
bNameExists = True
Exit While
End If
Index += 1
End While
If bNameExists Then
' 50554=Name Exists, 50144=Warning
MessageBox.Show(EgtMsg(50554), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
Return
End If
Dim sItems() As String = m_Parameter.DDFName.Split("."c)
If sItems.Count > 1 Then
sGeometry = m_GeometryName & "; " & m_HardwareTemp.HardwareGeneral.DDFName & ", " & sItems(1)
IniFile.SetGeometryNameList("GeometryNames", CStr(Index), sGeometry)
For Each Window In Application.Current.Windows
If TypeOf Window Is GeometryListConfigV Then
Dim GeometryListWindow As GeometryListConfigV = DirectCast(Window, GeometryListConfigV)
GeometryListWindow.Close()
'aggiorno la tabella in lettura
CompoMatch.ResetSTU()
CompoMatch.LoadTableGeometry()
End If
Next
Else
' 50555=Param Name is not correct, Impossible to save. ,50101=Error
MessageBox.Show(EgtMsg(50555), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Warning)
Return
End If
End Sub
#End Region ' Save
Sub New(ParamName As String)
' carico la lista degli Hardware
For Each Element In Map.refCompoPanelVM.CompoTypeList
m_HardwareList.Add(Element)
m_GraphicHardwareList.Add(Element.Name)
m_HardwareTemp = Map.refHardwarePageVM.CurrHardware
If Map.refHardwarePageVM.CurrHardware.HardwareGeneral.Name = Element.Name Then
' selziono il nome da mostrare in grafica
m_SelGraphicHardware = m_GraphicHardwareList(m_GraphicHardwareList.Count - 1)
m_SelHardware = Element
End If
Next
' carico la lista dei Parametri
LoadNameComboBoxLua(Map.refHardwarePageVM.CurrHardware, ParamName)
End Sub
End Class