Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/AddFeatureWnd/AddFeatureWndVM.vb
T
2024-02-01 17:08:34 +01:00

346 lines
11 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Imports EgtBEAMWALL.Core
Public Class AddFeatureWndVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend Event m_CloseWindow(bDialogResult As Boolean)
Friend m_MacroFilePathList As List(Of String)
Private m_PrevSelPRCIndex_L As Integer = 0
Private m_PrevSelPRCIndex_T As Integer = 0
Private m_SelGRPType As GRPType
Public Property SelGRPType As Integer
Get
Return m_SelGRPType
End Get
Set(value As Integer)
m_SelGRPType = value
' carico lista process
Dim TempPRCList As New ObservableCollection(Of Integer)
GetBeamPrivateProfileProcessList(m_SelGRPType, TempPRCList)
m_PRCList.Clear()
For Each PRC In TempPRCList
' leggo gruppi
Dim GRPList As New ObservableCollection(Of Integer)
GetBeamPrivateProfileGRPList(m_SelGRPType, PRC, GRPList)
m_PRCList.Add(New PRC(If(GRPList.Count > 0, GRPList(0), m_SelGRPType), PRC, GetBeamPrivateProfileName(m_SelGRPType, PRC)))
Next
If m_SelGRPType = GRPType.L Then
nSelPRC = PRCList(m_PrevSelPRCIndex_L)
ElseIf m_SelGRPType = GRPType.T Then
nSelPRC = PRCList(m_PrevSelPRCIndex_T)
End If
NotifyPropertyChanged("PRCList")
NotifyPropertyChanged("nSelPRC")
End Set
End Property
Private m_PRCList As New ObservableCollection(Of PRC)
Public ReadOnly Property PRCList As ObservableCollection(Of PRC)
Get
Return m_PRCList
End Get
End Property
Private m_NewMacroList As New ObservableCollection(Of NewMacro)
Public ReadOnly Property NewMacroList As ObservableCollection(Of NewMacro)
Get
Return m_NewMacroList
End Get
End Property
Private m_sSelMacroItem As NewMacro
Public Property sSelMacroItem As NewMacro
Get
Return m_sSelMacroItem
End Get
Set(value As NewMacro)
m_sSelMacroItem = value
NotifyPropertyChanged(NameOf(sSelMacroItem))
End Set
End Property
Private m_nSelPRC As PRC = Nothing
Public Property nSelPRC As PRC
Get
Return m_nSelPRC
End Get
Set(value As PRC)
If value IsNot m_nSelPRC Then
m_nSelPRC = value
If Not IsNothing(m_nSelPRC) Then
If SelGRPType = GRPType.L Then
m_PrevSelPRCIndex_L = PRCList.IndexOf(m_nSelPRC)
ElseIf SelGRPType = GRPType.T Then
m_PrevSelPRCIndex_T = PRCList.IndexOf(m_nSelPRC)
End If
End If
NotifyPropertyChanged("sDrawPath")
' carico eventuali file Macro
MacroList.Clear()
NewMacroList.Clear()
m_MacroFilePathList = New List(Of String)
If Not IsNothing(nSelPRC) Then
Dim nGRPFromFileName As Integer = 0
Dim nPRCFromFileName As Integer = 0
Dim sMacroNameFromFileName As String = String.Empty
Dim nIdMacroName As Integer = 0
' ricavo lista file Macro
Dim AllFilesInDir As IEnumerable(Of String) = IO.Directory.EnumerateFiles(Map.refMainWindowVM.MainWindowM.sMacroDir)
For Each File In AllFilesInDir
If Path.GetExtension(File).ToLower() = ".lua" Then
If File.Contains(FILENAMESEPARATOR) Then
Dim FileName As String = Path.GetFileNameWithoutExtension(File)
Dim DataFromFileName As String() = FileName.Split(FILENAMESEPARATOR)
If DataFromFileName.Count = 2 Then
If Not String.IsNullOrEmpty(DataFromFileName(0)) Then
Dim NumbersFromFileName As String() = DataFromFileName(0).Split(".")
Integer.TryParse(NumbersFromFileName(0), nGRPFromFileName)
Integer.TryParse(NumbersFromFileName(1), nPRCFromFileName)
End If
If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
sMacroNameFromFileName = DataFromFileName(1)
End If
If nGRPFromFileName = CalcBeamPrivateProfileGRP(nSelPRC.nGRP) AndAlso nPRCFromFileName = nSelPRC.nPRC Then
'MacroList.Add(New IdNameStruct(nIdMacroName, sMacroNameFromFileName))
NewMacroList.Add(New NewMacro(nIdMacroName, sMacroNameFromFileName, Map.refMainWindowVM.MainWindowM.sMacroDir & "\Templete\" & sMacroNameFromFileName & ".png"))
m_MacroFilePathList.Add(File)
nIdMacroName = nIdMacroName + 1
End If
End If
End If
End If
Next
'If MacroList.Count > 0 Then
' MacroList_IsEnabled = True
'Else
' MacroList_IsEnabled = False
'End If
If NewMacroList.Count > 0 Then
MacroList_IsEnabled = True
Else
MacroList_IsEnabled = False
End If
End If
End If
End Set
End Property
Private m_MacroList_IsEnabled As Boolean
Public Property MacroList_IsEnabled As Boolean
Get
Return m_MacroList_IsEnabled
End Get
Set(value As Boolean)
If value <> m_MacroList_IsEnabled Then
m_MacroList_IsEnabled = value
NotifyPropertyChanged("MacroList_IsEnabled")
End If
End Set
End Property
Private m_MacroList As New ObservableCollection(Of Object)
Public ReadOnly Property MacroList As ObservableCollection(Of Object)
Get
Return m_MacroList
End Get
End Property
Private m_nSelMacro As Integer = -1
Public Property nSelMacro As Integer
Get
Return m_nSelMacro
End Get
Set(value As Integer)
If value <> m_nSelMacro Then
m_nSelMacro = value
End If
End Set
End Property
Public ReadOnly Property sDrawPath As String
Get
If IsNothing(m_nSelPRC) Then Return ""
Dim sDescConstruction As String = String.Empty
If m_SelGRPType = GRPType.L Then
sDescConstruction = "L"
Else
sDescConstruction = "T"
End If
sDescConstruction &= m_nSelPRC.nPRC.ToString("000")
Return Map.refMainWindowVM.MainWindowM.sResourcesRoot & "\Features\" & sDescConstruction & ".png"
End Get
End Property
' Definizione comandi
Private m_cmdOk As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
SelGRPType = 0
'nSelPRC = PRCList(0)
' carico lista process
Dim TempPRCList As New ObservableCollection(Of Integer)
Dim TempPRCLList As New ObservableCollection(Of Integer)
Dim TempPRCLTist As New ObservableCollection(Of Integer)
GetBeamPrivateProfileProcessList(0, TempPRCLList)
GetBeamPrivateProfileProcessList(1, TempPRCLTist)
For Each PRCL In TempPRCLList
TempPRCList.Add(PRCL)
Next
For Each PRCT In TempPRCLTist
TempPRCList.Add(PRCT)
Next
m_PRCList.Clear()
For Each PRC In TempPRCList
' leggo gruppi
Dim GRPList As New ObservableCollection(Of Integer)
GetBeamPrivateProfileGRPList(0, PRC, GRPList)
Dim x = GRPList.Count
GetBeamPrivateProfileGRPList(1, PRC, GRPList)
m_PRCList.Add(New PRC(GRPList(0), PRC, GetBeamPrivateProfileName(0, PRC)))
m_PRCList.Add(New PRC(GRPList(0), PRC, GetBeamPrivateProfileName(1, PRC)))
Next
End Sub
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "Ok"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk Is Nothing Then
m_cmdOk = New Command(AddressOf Ok)
End If
Return m_cmdOk
End Get
End Property
Public Sub Ok()
'verifico che tutti i campi contengano un valore valido
If Not IsNothing(m_nSelPRC) AndAlso m_nSelPRC.nPRC > 0 Then
RaiseEvent m_CloseWindow(True)
Else
MessageBox.Show(EgtMsg(61852), EgtMsg(30007))
End If
End Sub
#End Region ' Ok
#End Region ' COMMANDS
End Class
Public Class PRC
' Processo
Private m_nPRC As Integer
Friend ReadOnly Property nPRC As Integer
Get
Return m_nPRC
End Get
End Property
' Gruppo
Private m_nGRP As Integer
Friend ReadOnly Property nGRP As Integer
Get
Return m_nGRP
End Get
End Property
Private m_nSIDE As Integer = 2
Public ReadOnly Property nSIDE As Integer
Get
Return m_nSIDE
End Get
End Property
' Nome
Private m_sName As String
Public ReadOnly Property sName As String
Get
Return m_sName
End Get
End Property
Public ReadOnly Property ghDesc As String
Get
Return If(m_nGRP = 1 OrElse m_nGRP = 2, "T", "L") & m_nPRC.ToString("000") & " " & m_sName
End Get
End Property
' lista dei parametri Q della feature
Protected m_QBTLParamVMList As List(Of QBTLParamVM)
Public Property QBTLParamVMList As List(Of QBTLParamVM)
Get
Return m_QBTLParamVMList
End Get
Set(value As List(Of QBTLParamVM))
m_QBTLParamVMList = value
End Set
End Property
Sub New(GRP As Integer, PRC As Integer, Name As String)
m_nPRC = PRC
m_sName = Name
m_nGRP = GRP
End Sub
Sub New(GRP As Integer, PRC As Integer, Name As String, QBTLParamList As List(Of QBTLParamVM))
m_nPRC = PRC
m_sName = Name
m_nGRP = GRP
m_QBTLParamVMList = QBTLParamList
End Sub
End Class
Public Class NewMacro
' Indice Macro
Private m_nIndexMacro As Integer
Public ReadOnly Property nIndexMacro As Integer
Get
Return m_nIndexMacro
End Get
End Property
' Nome Macro
Private m_sMacroName As String
Public ReadOnly Property sMacroName As String
Get
Return m_sMacroName
End Get
End Property
' Cartella dove sono contenuti i templete delle macro
Private m_sMacroDrawPath As String
Public ReadOnly Property sMacroDrawPath As String
Get
Return m_sMacroDrawPath
End Get
End Property
Sub New(IndexMacro As Integer, MacroName As String, MacroDrawPath As String)
m_nIndexMacro = IndexMacro
m_sMacroName = MacroName
m_sMacroDrawPath = MacroDrawPath
End Sub
End Class