Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Namespace EgtCAM5 Public Class StatusBarViewModel Inherits ViewModelBase #Region "FIELDS & PROPERTIES" ' GRAPHICAL ELEMENTS Private m_StatusOutput As String Public Property StatusOutput As String Get Return m_StatusOutput End Get Set(value As String) m_StatusOutput = value OnPropertyChanged("StatusOutput") End Set End Property Private m_StatusCurrPos As String Public Property StatusCurrPos As String Get Return m_StatusCurrPos End Get Set(value As String) m_StatusCurrPos = value OnPropertyChanged("StatusCurrPos") End Set End Property Private m_StatusProgress As Integer Public Property StatusProgress As Integer Get Return m_StatusProgress End Get Set(value As Integer) m_StatusProgress = value OnPropertyChanged("StatusProgress") End Set End Property Private m_StatusStopIsEnabled As Boolean Public Property StatusStopIsEnabled As Boolean Get Return m_StatusStopIsEnabled End Get Set(value As Boolean) m_StatusStopIsEnabled = value OnPropertyChanged("StatusStopIsEnabled") End Set End Property Private m_StatusGridText As String Public Property StatusGridText As String Get Return m_StatusGridText End Get Set(value As String) m_StatusGridText = value OnPropertyChanged("StatusGridText") End Set End Property Private m_CurrPosTypeText As String Public Property CurrPosTypeText As String Get Return m_CurrPosTypeText End Get Set(value As String) m_CurrPosTypeText = value OnPropertyChanged("CurrPosTypeText") End Set End Property Private m_StatusUnitsText As String Public Property StatusUnitsText As String Get Return m_StatusUnitsText End Get Set(value As String) m_StatusUnitsText = value OnPropertyChanged("StatusUnitsText") End Set End Property Private m_SnapPointTypeText As String Public Property SnapPointTypeText As String Get Return m_SnapPointTypeText End Get Set(value As String) m_SnapPointTypeText = value OnPropertyChanged("SnapPointTypeText") End Set End Property Private m_SnapPointTypeBackground As SolidColorBrush Public Property SnapPointTypeBackground As SolidColorBrush Get Return m_SnapPointTypeBackground End Get Set(value As SolidColorBrush) m_SnapPointTypeBackground = value OnPropertyChanged("SnapPointTypeBackground") End Set End Property ' Lista delle macchine disponibili nel programma Private m_MachinesList As New ObservableCollection(Of Machine) Public Property MachinesList As ObservableCollection(Of Machine) Get Return m_MachinesList End Get Set(value As ObservableCollection(Of Machine)) m_MachinesList = value End Set End Property ' Macchina correntemente selezionata e quindi attiva Private m_SelectedMachine As Machine Public Property SelectedMachine As Machine Get Return m_SelectedMachine End Get Set(value As Machine) If value IsNot m_SelectedMachine Then m_SelectedMachine = value EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtSetCurrMachine(m_SelectedMachine.Name) IniFile.m_sDbsCurrMachIniFilePath = m_SelectedMachine.MachineDirPath & "\" & m_SelectedMachine.Name & ".ini" IniFile.m_sTdbCurrMachToolsDirPath = m_SelectedMachine.MachineDirPath & "\Tools" Application.Msn.NotifyColleagues(Application.LOADSELECTEDMACHINE) OnPropertyChanged("SelectedMachine") End If End Set End Property ' Commands definition Private m_cmdStatusGrid As ICommand Private m_cmdCurrPosType As ICommand Private m_cmdStatusUnits As ICommand Private m_cmdStatusStop As ICommand #End Region ' Fields & Properties #Region "CONSTRUCTOR" Sub New() Application.Msn.Register(Application.NOTIFYCURRPOS, Sub(sCursorPos As String) StatusCurrPos = sCursorPos End Sub) Application.Msn.Register(Application.NOTIFYSTATUSOUTPUT, Sub(sStatusOutput As String) StatusOutput = sStatusOutput End Sub) Application.Msn.Register(Application.NOTIFYSTATUSPROGRESS, Sub(sStatusProgress As Integer) StatusProgress = sStatusProgress End Sub) Application.Msn.Register(Application.NOTIFYSTATUSSTOP, Sub(sStatusStop As Boolean) StatusStopIsEnabled = sStatusStop End Sub) Application.Msn.Register(Application.UPDATESTATUSGRID, Sub(UpdateStatusGridParam As UpdateStatusGridParam) UpdateStatusGrid(UpdateStatusGridParam.m_bShowGrid, UpdateStatusGridParam.m_bShowGridFrame) End Sub) Application.Msn.Register(Application.STATUSCURRPOSTYPETEXT, Sub(sString As String) CurrPosTypeText = sString End Sub) Application.Msn.Register(Application.UPDATESTATUSUNITS, Sub(bMmUnits As Boolean) StatusUnitsText = If(bMmUnits, "mm", "in") EgtSetUiUnits(bMmUnits) End Sub) Application.Msn.Register(Application.STATUSSNAPPOINTTYPETEXT, Sub(sString As String) SnapPointTypeText = sString End Sub) Application.Msn.Register(Application.STATUSSNAPPOINTTYPEBACKGROUND, Sub(Color As SolidColorBrush) SnapPointTypeBackground = Color End Sub) SearchMachine() Application.Msn.Register(Application.LOADCURRENTMACHINE, Sub() Dim CurrMach As String = String.Empty GetPrivateProfileString(S_MACH, K_CURRMACH, String.Empty, CurrMach) If Not String.IsNullOrEmpty(CurrMach) Then Dim Temp As Boolean = False For Each Mach In MachinesList If Mach.Name = CurrMach Then Temp = True SelectedMachine = Mach Exit For End If Next If Not Temp And MachinesList.Count > 0 Then SelectedMachine = MachinesList(0) End If Else If MachinesList.Count > 0 Then SelectedMachine = MachinesList(0) End If End If End Sub) Application.Msn.Register(Application.SAVECURRENTMACHINE, Sub() WritePrivateProfileString(S_MACH, K_CURRMACH, SelectedMachine.Name) End Sub) Application.Msn.Register(Application.RELOADCURRENTMACHINE, Sub() EgtSetCurrentContext(IniFile.m_ProjectSceneContext) EgtSetCurrMachine(SelectedMachine.Name) End Sub) End Sub #End Region ' Constructor #Region "COMMANDS" #Region "StatusGridCommand" ''' ''' Returns a command that set grid status. ''' Public ReadOnly Property StatusGridCommand As ICommand Get If m_cmdStatusGrid Is Nothing Then m_cmdStatusGrid = New RelayCommand(AddressOf StatusGrid, AddressOf CanStatusGrid) End If Return m_cmdStatusGrid End Get End Property ''' ''' Notify the function to set the status. This method is invoked by the StatusGridCommand. ''' Public Sub StatusGrid(ByVal param As Object) Application.Msn.NotifyColleagues(Application.STATUSGRIDCOMMAND) End Sub ''' ''' Returns always true. ''' Private Function CanStatusGrid(ByVal param As Object) As Boolean Return True End Function #End Region ' DoneCommand #Region "CurrPosTypeCommand" ''' ''' Returns a command that choose the current reference. ''' Public ReadOnly Property CurrPosTypeCommand As ICommand Get If m_cmdCurrPosType Is Nothing Then m_cmdCurrPosType = New RelayCommand(AddressOf CurrPosType, AddressOf CanCurrPosType) End If Return m_cmdCurrPosType End Get End Property ''' ''' Execute the Point. This method is invoked by the CurrPosTypeCommand. ''' Public Sub CurrPosType(ByVal param As Object) Application.Msn.NotifyColleagues(Application.STATUSCURRPOSTYPECOMMAND) End Sub ''' ''' Returns always true. ''' Private Function CanCurrPosType(ByVal param As Object) As Boolean Return True End Function #End Region ' CurrPosTypeCommand #Region "StatusUnitsCommand" ''' ''' Returns a command that choose the current reference. ''' Public ReadOnly Property StatusUnitsCommand As ICommand Get If m_cmdStatusUnits Is Nothing Then m_cmdStatusUnits = New RelayCommand(AddressOf StatusUnits, AddressOf CanStatusUnits) End If Return m_cmdStatusUnits End Get End Property ''' ''' Execute the Point. This method is invoked by the CurrPosTypeCommand. ''' Public Sub StatusUnits(ByVal param As Object) Application.Msn.NotifyColleagues(Application.STATUSUNITSCOMMAND) End Sub ''' ''' Returns always true. ''' Private Function CanStatusUnits(ByVal param As Object) As Boolean Return True End Function #End Region ' StatusUnitsCommand #Region "StatusStopCommand" ''' ''' Returns a command that choose the current reference. ''' Public ReadOnly Property StatusStopCommand As ICommand Get If m_cmdStatusStop Is Nothing Then m_cmdStatusStop = New RelayCommand(AddressOf StatusStop, AddressOf CanStatusStop) End If Return m_cmdStatusStop End Get End Property ''' ''' Execute the Point. This method is invoked by the CurrPosTypeCommand. ''' Public Sub StatusStop(ByVal param As Object) m_bStopScript = True End Sub ''' ''' Returns always true. ''' Private Function CanStatusStop(ByVal param As Object) As Boolean Return True End Function #End Region ' StatusStopCommand #End Region ' Commands #Region "METHODS" Private Sub UpdateStatusGrid(bShowGrid As Boolean, bShowGridFrame As Boolean) 'tsStatusGrid.ForeColor = If(m_bShowGrid, Color.Black, Color.Gray) StatusGridText = If(bShowGrid, "GRID ON ", "GRID OFF") EgtSetGridShow(bShowGrid, bShowGrid And bShowGridFrame) End Sub ''' ''' Method that search the machines in the correct folder and add to the MachinesList those valid. ''' Private Sub SearchMachine() Dim TempArray As String() = Directory.GetDirectories(IniFile.m_sMachinesRoot) For i As Integer = 0 To TempArray.Count - 1 Dim MachinePathIni As String = TempArray(i) & "\" & Path.GetFileName(TempArray(i)) & ".ini" If File.Exists(MachinePathIni) Then m_MachinesList.Add(New Machine With {.Name = Path.GetFileName(TempArray(i)), .MachineDirPath = TempArray(i)}) End If Next End Sub ''' ''' Class that create the association Name/IniPath for the machine's ''' Class Machine Private m_sName As String Public Property Name As String Get Return m_sName End Get Set(value As String) m_sName = value End Set End Property Friend MachineDirPath As String End Class #End Region ' Methods End Class End Namespace