Imports System.ComponentModel Imports System.Collections.ObjectModel Imports EgtUILib Imports System.IO Public Class CompoPanelViewModel Implements INotifyPropertyChanged Private m_rfMainWindowViewModel As MainWindowViewModel Private m_rfDoorParametersViewModel As DoorParametersViewModel Dim m_Chapter As String Private Shared m_CompoTypeList As New ObservableCollection(Of CompoType) Public Shared ReadOnly Property CompoTypeList As ObservableCollection(Of CompoType) Get Return m_CompoTypeList End Get End Property ' Definizione comando Private m_CmdCompoBtn As ICommand ' definizione comando Private m_EnterRefreshCmd As ICommand Sub New(MainWindowViewModel As MainWindowViewModel) m_rfMainWindowViewModel = MainWindowViewModel m_rfDoorParametersViewModel = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel) Dim IndexCompoOrder = 0 Dim CompoPanelList As List(Of String) = OptionModule.m_CompoPaneOrder ' Lettura file ini per generare bottoni Dim Index As Integer = 1 Dim CompoName As String = String.Empty Dim CompoNameDDF As String = String.Empty ' Carico un vettore con il nome delle Path delle componenti IniFile.m_CompoDir = IniFile.m_sDoorsDirPath & "\Compo" If Not Directory.Exists(IniFile.m_CompoDir) Then EgtOutLog("CompoDir not found : " & IniFile.m_CompoDir) Return End If Dim CompoArray() As String = Directory.GetDirectories(IniFile.m_CompoDir) ' carico i valori dei bottoni con un preciso ordine For IndexCompoOrder = 0 To DdfFile.CompoListOrder.Count - 1 For Index = 0 To CompoArray.Count - 1 ' apro ogni directory e cerco un file di testo di nome Config.ini Dim CurrCompoPath As String = CompoArray(Index) & "\" & ConstCompo.CONFIGINI_FILE_NAME If File.Exists(CurrCompoPath) Then GetPrivateProfileCompoName(ConstCompo.S_COMPO, ConstCompo.K_NAME, CompoNameDDF, CompoName, CurrCompoPath) If CompoPanelList(IndexCompoOrder) = CompoNameDDF Then m_CompoTypeList.Add(New CompoType(CompoName, CompoNameDDF, CompoArray(Index))) Exit For End If End If Next Next End Sub #Region "COMMANDS" #Region "CompoBtnCommand" ''' ''' Returns a command that do Exec. ''' Public ReadOnly Property CompoBtnCommand As ICommand Get If m_CmdCompoBtn Is Nothing Then m_CmdCompoBtn = New Command(AddressOf CompoBtn) End If Return m_CmdCompoBtn End Get End Property ''' ''' Execute the Exec. This method is invoked by the ExecCommand. ''' ''' Public Sub CompoBtn(param As Object) Dim m_CurrCompoType As CompoType = DirectCast(param, CompoType) If Not IsNothing(m_rfDoorParametersViewModel.CurrDoor) Then m_rfDoorParametersViewModel.CurrDoor.AddNewCompo(m_CurrCompoType) 'richiamo la pagina della guida ssociata alla componente selezionata GuideViewModel.m_AddressGuide = "Compo" & "\" & m_CurrCompoType.DDFName Else MessageBox.Show(EgtMsg(50108), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation) End If End Sub #End Region ' CompoBtnCommand #Region "ENTERREFRESH" ''' ''' Returns a command that do Refresh. ''' Public ReadOnly Property RefreshCmd As ICommand Get If m_EnterRefreshCmd Is Nothing Then m_EnterRefreshCmd = New Command(AddressOf EnterRefresh) End If Return m_EnterRefreshCmd End Get End Property Public Sub EnterRefresh() DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).RefreshBtn() End Sub #End Region ' EnterRefresh #End Region 'Commands Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Public Sub NotifyPropertyChanged(propName As String) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName)) End Sub End Class