Imports System.Collections.ObjectModel Imports System.ComponentModel Imports System.Text Imports EgtUILib Imports EgtWPFLib5 Public Class Material Inherits VMBase Private m_CathegoryList As New ObservableCollection(Of MaterialCathegory) Public ReadOnly Property CathegoryList As ObservableCollection(Of MaterialCathegory) Get Return m_CathegoryList End Get End Property Private m_bIsModified As Boolean Public ReadOnly Property bIsModified As Boolean Get Return m_bIsModified End Get End Property Friend Sub UpdateIsModified() m_bIsModified = m_CathegoryList.Any(Function(x) x.MaterialParamList.Any(Function(y) y.bIsModified)) NotifyPropertyChanged(NameOf(ghName)) End Sub Private m_nIndex As Integer Public ReadOnly Property nIndex As Integer Get Return m_nIndex End Get End Property Private m_sGUID As String Public ReadOnly Property sGUID As String Get Return m_sGUID End Get End Property Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value Map.refMaterialDbVM.SetNameVisibility(False) NotifyPropertyChanged(NameOf(ghName)) End Set End Property Public ReadOnly Property ghName As String Get Return m_sName & If(m_bIsModified, "*", "") End Get End Property Private m_dK As Double Public ReadOnly Property dK As Double Get Return m_dK End Get End Property Private m_dC1 As Double Public ReadOnly Property dC1 As Double Get Return m_dC1 End Get End Property Private m_dC2 As Double Public ReadOnly Property dC2 As Double Get Return m_dC2 End Get End Property Private m_dDensity As Double Public ReadOnly Property dDensity As Double Get Return m_dDensity End Get End Property Private m_dAMax As Double Public ReadOnly Property dAMax As Double Get Return m_dAMax End Get End Property Private m_dATrg As Double Public ReadOnly Property dATrg As Double Get Return m_dATrg End Get End Property Private m_dAMin As Double Public ReadOnly Property dAMin As Double Get Return m_dAMin End Get End Property Private m_dBMax As Double Public ReadOnly Property dBMax As Double Get Return m_dBMax End Get End Property Private m_dBTrg As Double Public ReadOnly Property dBTrg As Double Get Return m_dBTrg End Get End Property Private m_dBMin As Double Public ReadOnly Property dBMin As Double Get Return m_dBMin End Get End Property Private m_dKW As Double Friend ReadOnly Property dKW As Double Get Return m_dKW End Get End Property Private m_dKZ As Double Friend ReadOnly Property dKZ As Double Get Return m_dKZ End Get End Property Private m_dKN As Double Friend ReadOnly Property dKN As Double Get Return m_dKN End Get End Property ' per lettura da file Sub New(nIndex As Integer) m_nIndex = nIndex ReadMaterialParamString(nIndex, MAT_GUID, "", m_sGUID) ReadMaterialParamString(nIndex, MAT_NAME, "", m_sName) 'EgtGetStringUtf8FromIni(nIndex, MAT_NAME, "", m_sName, sMatIniFilePath) m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.GENERAL, nIndex)) m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.TEMPERATURES, nIndex)) m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.CONSTANT, nIndex)) For Each Cathegory In m_CathegoryList For Each MaterialParam In Cathegory.MaterialParamList AddHandler MaterialParam.PropertyChanged, AddressOf OnMaterialParamPropertyChanged Next Next End Sub ' per copia Sub New() m_nIndex = Map.refMaterialDbVM.MaterialList.Max(Function(x) x.nIndex) + 1 m_sGUID = Guid.NewGuid.ToString() m_sName = "New Material Param" Dim nCopyIndex As Integer = Map.refMaterialDbVM.SelMaterial.m_nIndex m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.GENERAL, nCopyIndex)) Dim Orig As StringMaterialParam = m_CathegoryList(0).MaterialParamList.FirstOrDefault(Function(x) x.Type = MaterialParam.Params.ORIG) If Not IsNothing(Orig) Then Orig.SetGuid(Map.refMaterialDbVM.SelMaterial.m_sGUID) End If m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.TEMPERATURES, nCopyIndex)) m_CathegoryList.Add(New MaterialCathegory(MaterialCathegory.Cathegories.CONSTANT, nCopyIndex)) For Each Cathegory In m_CathegoryList For Each MaterialParam In Cathegory.MaterialParamList AddHandler MaterialParam.PropertyChanged, AddressOf OnMaterialParamPropertyChanged Next Next m_bIsModified = True End Sub Sub New(nIndex As Integer, sGUID As String, sName As String) m_nIndex = nIndex m_sName = sName m_sGUID = sGUID m_dK = ReadMaterialParamDouble(m_nIndex, MAT_K, 0) m_dC1 = ReadMaterialParamDouble(m_nIndex, MAT_C1, 0) m_dC2 = ReadMaterialParamDouble(m_nIndex, MAT_C2, 0) m_dDensity = ReadMaterialParamDouble(m_nIndex, MAT_DENSITY, 0) m_dAMax = ReadMaterialParamDouble(m_nIndex, MAT_AMAX, 0) m_dATrg = ReadMaterialParamDouble(m_nIndex, MAT_ATRG, 0) m_dAMin = ReadMaterialParamDouble(m_nIndex, MAT_AMIN, 0) m_dBMax = ReadMaterialParamDouble(m_nIndex, MAT_BMAX, 0) m_dBTrg = ReadMaterialParamDouble(m_nIndex, MAT_BTRG, 0) m_dBMin = ReadMaterialParamDouble(m_nIndex, MAT_BMIN, 0) m_dKW = ReadMaterialParamDouble(m_nIndex, MAT_KW, 0) m_dKZ = ReadMaterialParamDouble(m_nIndex, MAT_KZ, 0) m_dKN = ReadMaterialParamDouble(m_nIndex, MAT_KN, 0) End Sub Private Sub ReadAllParams() 'm_bSlicing45 = ReadMaterialParamDouble(m_nIndex, MAC_SLICING45, 0, CurrentMachine.sMachiningFilePath) 'm_dStrandH = ReadMaterialParamDouble(m_nIndex, MAC_STRANDH, 0, CurrentMachine.sMachiningFilePath) 'm_dStrandW = ReadMaterialParamDouble(m_nIndex, MAC_STRANDW, 0, CurrentMachine.sMachiningFilePath) 'm_nStrandCount = ReadMaterialParamDouble(m_nIndex, MAC_STRANDCOUNT, 0, CurrentMachine.sMachiningFilePath) 'm_dOffset = ReadMaterialParamDouble(m_nIndex, MAC_OFFSET, 0, CurrentMachine.sMachiningFilePath) 'm_dStartPointOffsetOnSlice = ReadMaterialParamDouble(m_nIndex, MAC_STARTPOINTOFFSETONSLICE, 0, CurrentMachine.sMachiningFilePath) 'm_dStrandOrder = ReadMaterialParamDouble(m_nIndex, MAC_STRANDORDER, 0, CurrentMachine.sMachiningFilePath) 'm_dDirection = ReadMaterialParamDouble(m_nIndex, MAC_DIRECTION, 0, CurrentMachine.sMachiningFilePath) 'm_dLinkType = ReadMaterialParamDouble(m_nIndex, MAC_LINKTYPE, 0, CurrentMachine.sMachiningFilePath) 'm_dLinkParam = ReadMaterialParamDouble(m_nIndex, MAC_LINKPARAM, 0, CurrentMachine.sMachiningFilePath) 'm_dLinkZup = ReadMaterialParamDouble(m_nIndex, MAC_LINKZUP, 0, CurrentMachine.sMachiningFilePath) 'm_dOffsetLeadPoint = ReadMaterialParamDouble(m_nIndex, MAC_OFFSETLEADPOINT, 0, CurrentMachine.sMachiningFilePath) 'm_dLeadIn = ReadMaterialParamDouble(m_nIndex, MAC_LEADIN, 0, CurrentMachine.sMachiningFilePath) 'm_dLeadInTangDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADINTANGDIST, 0, CurrentMachine.sMachiningFilePath) 'm_dLeadInOrthoDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADINORTHODIST, 0, CurrentMachine.sMachiningFilePath) 'm_dLeadOut = ReadMaterialParamDouble(m_nIndex, MAC_LEADOUT, 0, CurrentMachine.sMachiningFilePath) 'm_dLeadOutTangDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADOUTTANGDIST, 0, CurrentMachine.sMachiningFilePath) 'm_dLeadOutOrthoDist = ReadMaterialParamDouble(m_nIndex, MAC_LEADOUTORTHODIST, 0, CurrentMachine.sMachiningFilePath) 'm_dCoastingLen = ReadMaterialParamDouble(m_nIndex, MAC_COASTINGLEN, 0, CurrentMachine.sMachiningFilePath) 'm_dCoastingFeed = ReadMaterialParamDouble(m_nIndex, MAC_COASTINGFEED, 0, CurrentMachine.sMachiningFilePath) 'm_dWipeLen = ReadMaterialParamDouble(m_nIndex, MAC_WIPELEN, 0, CurrentMachine.sMachiningFilePath) 'm_dWipeFeedPu = ReadMaterialParamDouble(m_nIndex, MAC_WIPEFEEDPU, 0, CurrentMachine.sMachiningFilePath) 'm_dFloorCount = ReadMaterialParamDouble(m_nIndex, MAC_FLOORCOUNT, 0, CurrentMachine.sMachiningFilePath) 'm_dG0Feed = ReadMaterialParamDouble(m_nIndex, MAC_G0FEED, 0, CurrentMachine.sMachiningFilePath) 'm_dToolDiam = ReadMaterialParamDouble(m_nIndex, MAC_TOOLDIAM, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsOverlap = ReadMaterialParamDouble(m_nIndex, MAC_RIBSOVERLAP, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsStrandCount = ReadMaterialParamDouble(m_nIndex, MAC_RIBSSTRANDCOUNT, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLink = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLINK, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsInvertOrder = ReadMaterialParamDouble(m_nIndex, MAC_RIBSINVERTORDER, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsInvertDirection = ReadMaterialParamDouble(m_nIndex, MAC_RIBSINVERTDIRECTION, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadInInvert = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADININVERT, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadInLen = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADINLEN, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadOutInvert = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTINVERT, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadOutLen = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTLEN, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadOutCoasting = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTCOASTING, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadOutWipe = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTWIPE, 0, CurrentMachine.sMachiningFilePath) 'm_dRibsLeadOutWipeDir = ReadMaterialParamDouble(m_nIndex, MAC_RIBSLEADOUTWIPEDIR, 0, CurrentMachine.sMachiningFilePath) End Sub Friend Sub Save() If bIsModified Then ' salvo tutti i parametri su orig SaveParams() ' resetto stato di modificata UpdateIsModified() ' segno Db come modificato Map.refMaterialDbVM.SetIsModified(True) End If End Sub Private Sub SaveParams() For Each Cathegory In m_CathegoryList Cathegory.SaveParams() Next End Sub Friend Sub ResetModification() If bIsModified Then ' annullo le modifiche di tutti i parametri SaveParams() ' resetto stato di modificata UpdateIsModified() End If End Sub Private Sub ResetParams() For Each Cathegory In m_CathegoryList Cathegory.ResetParams() Next End Sub Friend Sub WriteParamsOnDb(nIndex As Integer) WriteMaterialParam(nIndex, MAT_GUID, m_sGUID) WriteMaterialParam(nIndex, MAT_NAME, m_sName) ' EgtWriteStringUtf8toIni(nIndex, MAT_NAME, m_sName) For Each Cathegory In m_CathegoryList Cathegory.WriteParamOnDb(nIndex) Next End Sub Private Sub OnMaterialParamPropertyChanged(sender As Object, e As PropertyChangedEventArgs) Select Case e.PropertyName Case NameOf(sender.dValue), NameOf(sender.sValue), NameOf(sender.bValue), NameOf(sender.SelValue) m_bIsModified = m_CathegoryList.Any(Function(x) x.MaterialParamList.Any(Function(y) y.bIsModified)) NotifyPropertyChanged(NameOf(ghName)) End Select End Sub End Class Public Class MaterialIndex Private m_nIndex As Integer Public ReadOnly Property nIndex As Integer Get Return m_nIndex End Get End Property Private m_sGUID As String Public ReadOnly Property sGUID As String Get Return m_sGUID End Get End Property Private m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Sub New(nIndex As Integer, sGUID As String, sName As String) m_nIndex = nIndex m_sGUID = sGUID m_sName = sName End Sub End Class Public Class MaterialCathegory Inherits VMBase Public Enum Cathegories As Integer GENERAL = 1 TEMPERATURES = 2 CONSTANT = 3 End Enum Private m_Type As Cathegories Public ReadOnly Property Type As Cathegories Get Return m_Type End Get End Property Private m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Private m_MaterialParamList As List(Of MaterialParam) Public ReadOnly Property MaterialParamList As List(Of MaterialParam) Get Return m_MaterialParamList End Get End Property Private m_Cathegory_IsExpanded As Boolean Public Property Cathegory_IsExpanded As Boolean Get Return m_Cathegory_IsExpanded End Get Set(value As Boolean) m_Cathegory_IsExpanded = value End Set End Property Private m_Cathegory_Visibility As Visibility = Visibility.Collapsed Public ReadOnly Property Cathegory_Visibility As Visibility Get Return m_Cathegory_Visibility End Get End Property Sub New(Type As Cathegories, nIndex As Integer) m_Type = Type Select Case m_Type Case Cathegories.GENERAL m_sName = "General" m_MaterialParamList = New List(Of MaterialParam)({New NumericMaterialParam(MaterialParam.Params.K, nIndex), New NumericMaterialParam(MaterialParam.Params.DENSITY, nIndex), New StringMaterialParam(MaterialParam.Params.ORIG, nIndex)}) m_Cathegory_Visibility = Visibility.Visible Case Cathegories.TEMPERATURES m_sName = "Temperatures" m_MaterialParamList = New List(Of MaterialParam)({New NumericMaterialParam(MaterialParam.Params.T1, nIndex), New NumericMaterialParam(MaterialParam.Params.T2, nIndex), New NumericMaterialParam(MaterialParam.Params.T3, nIndex), New NumericMaterialParam(MaterialParam.Params.T4, nIndex), New NumericMaterialParam(MaterialParam.Params.T5, nIndex)}) m_Cathegory_Visibility = Visibility.Visible Case Cathegories.CONSTANT m_sName = "Constant" m_MaterialParamList = New List(Of MaterialParam)({New NumericMaterialParam(MaterialParam.Params.C1, nIndex), New NumericMaterialParam(MaterialParam.Params.C2, nIndex), New NumericMaterialParam(MaterialParam.Params.AMAX, nIndex), New NumericMaterialParam(MaterialParam.Params.ATRG, nIndex), New NumericMaterialParam(MaterialParam.Params.AMIN, nIndex), New NumericMaterialParam(MaterialParam.Params.BMAX, nIndex), New NumericMaterialParam(MaterialParam.Params.BTRG, nIndex), New NumericMaterialParam(MaterialParam.Params.BMIN, nIndex), New NumericMaterialParam(MaterialParam.Params.KW, nIndex), New NumericMaterialParam(MaterialParam.Params.KZ, nIndex), New NumericMaterialParam(MaterialParam.Params.KN, nIndex)}) m_Cathegory_Visibility = If(Map.refMainWindowVM.MainWindowM.nUserLevel >= 5, Visibility.Visible, Visibility.Collapsed) End Select NotifyPropertyChanged(NameOf(Cathegory_Visibility)) End Sub Friend Sub SaveParams() For Each Param In m_MaterialParamList Param.SaveParam() Next End Sub Friend Sub ResetParams() For Each Param In m_MaterialParamList Param.ResetParam() Next End Sub Friend Sub WriteParamOnDb(nIndex As Integer) For Each Param In m_MaterialParamList Param.WriteParamOnDb(nIndex) Next End Sub End Class Public MustInherit Class MaterialParam Inherits VMBase Public Enum Params As Integer NAME = 2 T1 = 3 T2 = 4 T3 = 5 T4 = 6 T5 = 7 K = 8 C1 = 9 C2 = 10 DENSITY = 11 AMAX = 12 ATRG = 13 AMIN = 14 BMAX = 15 BTRG = 16 BMIN = 17 KW = 18 KZ = 19 KN = 20 ORIG = 21 End Enum Private m_Type As Params Public ReadOnly Property Type As Params Get Return m_Type End Get End Property Private m_sName As String Public ReadOnly Property sName As String Get Return m_sName End Get End Property Public MustOverride ReadOnly Property bIsModified As Boolean Sub New(Type As Params) m_Type = Type Select Case m_Type Case Params.T1 m_sName = "Temperature 1" Case Params.T2 m_sName = "Temperature 2" Case Params.T3 m_sName = "Temperature 3" Case Params.T4 m_sName = "Temperature 4" Case Params.T5 m_sName = "Temperature 5" Case Params.K m_sName = "Constant" Case Params.C1 m_sName = "C1" Case Params.C2 m_sName = "C2" Case Params.DENSITY m_sName = "Density" Case Params.AMAX m_sName = "A Max" Case Params.ATRG m_sName = "A Target" Case Params.AMIN m_sName = "A Min" Case Params.BMAX m_sName = "B Max" Case Params.BTRG m_sName = "B Target" Case Params.BMIN m_sName = "B Min" Case Params.KW m_sName = "KW" Case Params.KZ m_sName = "KZ" Case Params.KN m_sName = "KN" Case Params.ORIG m_sName = "Original" End Select End Sub Friend MustOverride Sub WriteParamOnDb(nIndex As Integer) Friend MustOverride Sub SaveParam() Friend MustOverride Sub ResetParam() End Class Public Class NumericMaterialParam Inherits MaterialParam Private m_bIsLen As Boolean = False Private m_dValue As Double Public Property dValue As String Get Return If(m_bIsLen, LenToString(m_dValue, 1), m_dValue) End Get Set(value As String) If m_bIsLen Then StringToLen(value, m_dValue) Else m_dValue = value End If NotifyPropertyChanged(NameOf(dValue)) End Set End Property Private m_dOrigValue As Double Public ReadOnly Property dOrigValue As Double Get Return m_dOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_dValue <> m_dOrigValue End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) Select Case Type Case Params.T1 m_dValue = ReadMaterialParamDouble(nIndex, MAT_T1, 0) m_bIsLen = False Case Params.T2 m_dValue = ReadMaterialParamDouble(nIndex, MAT_T2, 0) m_bIsLen = False Case Params.T3 m_dValue = ReadMaterialParamDouble(nIndex, MAT_T3, 0) m_bIsLen = False Case Params.T4 m_dValue = ReadMaterialParamDouble(nIndex, MAT_T4, 0) m_bIsLen = False Case Params.T5 m_dValue = ReadMaterialParamDouble(nIndex, MAT_T5, 0) m_bIsLen = False Case Params.K m_dValue = ReadMaterialParamDouble(nIndex, MAT_K, 0) m_bIsLen = False Case Params.C1 m_dValue = ReadMaterialParamDouble(nIndex, MAT_C1, 0) m_bIsLen = False Case Params.C2 m_dValue = ReadMaterialParamDouble(nIndex, MAT_C2, 0) m_bIsLen = False Case Params.DENSITY m_dValue = ReadMaterialParamDouble(nIndex, MAT_DENSITY, 0) m_bIsLen = False Case Params.AMAX m_dValue = ReadMaterialParamDouble(nIndex, MAT_AMAX, 0) m_bIsLen = False Case Params.ATRG m_dValue = ReadMaterialParamDouble(nIndex, MAT_ATRG, 0) m_bIsLen = False Case Params.AMIN m_dValue = ReadMaterialParamDouble(nIndex, MAT_AMIN, 0) m_bIsLen = False Case Params.BMAX m_dValue = ReadMaterialParamDouble(nIndex, MAT_BMAX, 0) m_bIsLen = False Case Params.BTRG m_dValue = ReadMaterialParamDouble(nIndex, MAT_BTRG, 0) m_bIsLen = False Case Params.BMIN m_dValue = ReadMaterialParamDouble(nIndex, MAT_BMIN, 0) m_bIsLen = False Case Params.KW m_dValue = ReadMaterialParamDouble(nIndex, MAT_KW, 0) m_bIsLen = False Case Params.KZ m_dValue = ReadMaterialParamDouble(nIndex, MAT_KZ, 0) m_bIsLen = False Case Params.KN m_dValue = ReadMaterialParamDouble(nIndex, MAT_KN, 0) m_bIsLen = False End Select m_dOrigValue = m_dValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Dim sWriteValue As String = "" If m_bIsLen Then sWriteValue = LenToString(m_dValue, 5) Else sWriteValue = DoubleToString(m_dValue, 5) End If Select Case Type Case Params.T1 WriteMaterialParam(nIndex, MAT_T1, sWriteValue) Case Params.T2 WriteMaterialParam(nIndex, MAT_T2, sWriteValue) Case Params.T3 WriteMaterialParam(nIndex, MAT_T3, sWriteValue) Case Params.T4 WriteMaterialParam(nIndex, MAT_T4, sWriteValue) Case Params.T5 WriteMaterialParam(nIndex, MAT_T5, sWriteValue) Case Params.K WriteMaterialParam(nIndex, MAT_K, sWriteValue) Case Params.C1 WriteMaterialParam(nIndex, MAT_C1, sWriteValue) Case Params.C2 WriteMaterialParam(nIndex, MAT_C2, sWriteValue) Case Params.DENSITY WriteMaterialParam(nIndex, MAT_DENSITY, sWriteValue) Case Params.AMAX WriteMaterialParam(nIndex, MAT_AMAX, sWriteValue) Case Params.ATRG WriteMaterialParam(nIndex, MAT_ATRG, sWriteValue) Case Params.AMIN WriteMaterialParam(nIndex, MAT_AMIN, sWriteValue) Case Params.BMAX WriteMaterialParam(nIndex, MAT_BMAX, sWriteValue) Case Params.BTRG WriteMaterialParam(nIndex, MAT_BTRG, sWriteValue) Case Params.BMIN WriteMaterialParam(nIndex, MAT_BMIN, sWriteValue) Case Params.KW WriteMaterialParam(nIndex, MAT_KW, sWriteValue) Case Params.KZ WriteMaterialParam(nIndex, MAT_KZ, sWriteValue) Case Params.KN WriteMaterialParam(nIndex, MAT_KN, sWriteValue) End Select End Sub Friend Overrides Sub SaveParam() m_dOrigValue = m_dValue End Sub Friend Overrides Sub ResetParam() m_dValue = m_dOrigValue End Sub End Class Public Class StringMaterialParam Inherits MaterialParam Private m_sGUID As String Public Property sGUID As String Get Return m_sGUID End Get Set(value As String) m_sGUID = value End Set End Property Friend Sub SetGuid(sGUID As String) Dim OrigMaterial As MaterialIndex = Map.refTopPanelVM.MaterialList.FirstOrDefault(Function(x) x.sGUID = sGUID) If Not IsNothing(OrigMaterial) Then m_sGUID = OrigMaterial.sGUID m_sValue = OrigMaterial.sName End If End Sub Private m_sValue As String Public Property sValue As String Get Return m_sValue End Get Set(value As String) m_sValue = value NotifyPropertyChanged(NameOf(sValue)) End Set End Property Private m_sOrigValue As String Public ReadOnly Property sOrigValue As String Get Return m_sOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_sValue <> m_sOrigValue End Get End Property Private m_bIsReadOnly As Boolean = True Public ReadOnly Property bIsReadOnly As Boolean Get Return m_bIsReadOnly End Get End Property Private m_String_Visibility As Visibility = Visibility.Collapsed Public ReadOnly Property String_Visibility As Visibility Get Return m_String_Visibility End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) Select Case Type Case Params.ORIG Dim sOrigGUID As String = "" ReadMaterialParamString(nIndex, MAT_ORIG, "", sOrigGUID) If sOrigGUID = "***" Then m_sGUID = sOrigGUID m_sValue = sOrigGUID ' se livello alto, lo visualizzo comunque If Map.refMainWindowVM.MainWindowM.nUserLevel >= 5 Then m_String_Visibility = Visibility.Visible Else m_String_Visibility = Visibility.Collapsed End If Else Dim OrigMaterial As MaterialIndex = Map.refTopPanelVM.MaterialList.FirstOrDefault(Function(x) x.sGUID = sOrigGUID) If Not IsNothing(OrigMaterial) Then m_sGUID = OrigMaterial.sGUID m_sValue = OrigMaterial.sName ' m_sValue = OrigMaterial.sName End If m_String_Visibility = Visibility.Visible End If NotifyPropertyChanged(NameOf(String_Visibility)) End Select ' verifico chiave per assegnare readonly If Map.refMainWindowVM.MainWindowM.nUserLevel >= 5 Then m_bIsReadOnly = False End If m_sOrigValue = m_sValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Select Case Type Case Params.ORIG WriteMaterialParam(nIndex, MAT_ORIG, m_sGUID) End Select End Sub Friend Overrides Sub SaveParam() m_sOrigValue = m_sValue End Sub Friend Overrides Sub ResetParam() m_sValue = m_sOrigValue End Sub End Class Public Class ComboMaterialParam Inherits MaterialParam Private m_ValueList As List(Of IdNameStruct) Public ReadOnly Property ValueList As List(Of IdNameStruct) Get Return m_ValueList End Get End Property Private m_SelValue As IdNameStruct Public Property SelValue As IdNameStruct Get Return m_SelValue End Get Set(value As IdNameStruct) m_SelValue = value NotifyPropertyChanged(NameOf(SelValue)) End Set End Property Private m_OrigSelValue As IdNameStruct Public ReadOnly Property OrigSelValue As IdNameStruct Get Return m_OrigSelValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_SelValue.Id <> m_OrigSelValue.Id End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) Select Case Type 'Case Params.STRANDORDER ' m_ValueList = New List(Of IdNameStruct)({New IdNameStruct(Material.MPAR_STRANDORDERS.INTOOUT, "From Inside To Outside"), ' New IdNameStruct(Material.MPAR_STRANDORDERS.OUTTOIN, "From Outside To Inside")}) ' m_SelValue = m_ValueList.FirstOrDefault(Function(x) x.Id = ReadMaterialParamDouble(nIndex, MAC_STRANDORDER, 0)) End Select m_OrigSelValue = m_SelValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Select Case Type 'Case Params.STRANDORDER ' WriteMaterialParam(nIndex, MAC_STRANDORDER, m_SelValue.Id) End Select End Sub Friend Overrides Sub SaveParam() m_OrigSelValue = m_SelValue End Sub Friend Overrides Sub ResetParam() m_SelValue = m_OrigSelValue End Sub End Class Public Class CheckMaterialParam Inherits MaterialParam Private m_bValue As Boolean Public Property bValue As Boolean Get Return m_bValue End Get Set(value As Boolean) m_bValue = value NotifyPropertyChanged(NameOf(bValue)) End Set End Property Private m_bOrigValue As String Public ReadOnly Property bOriValue As String Get Return m_bOrigValue End Get End Property Public Overrides ReadOnly Property bIsModified As Boolean Get Return m_bValue <> m_bOrigValue End Get End Property Sub New(Type As Params, nIndex As Integer) MyBase.New(Type) Select Case Type 'Case Params.SLICING45 ' m_bValue = ReadMaterialParamDouble(nIndex, MAC_SLICING45, 0) End Select m_bOrigValue = m_bValue End Sub Friend Overrides Sub WriteParamOnDb(nIndex As Integer) Select Case Type 'Case Params.SLICING45 ' WriteMaterialParam(nIndex, MAC_SLICING45, If(m_bValue, 1, 0)) End Select End Sub Friend Overrides Sub SaveParam() m_bOrigValue = m_bValue End Sub Friend Overrides Sub ResetParam() m_bValue = m_bOrigValue End Sub End Class