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