EgtDOORCreator 1.8d5 : Aggiorna le liste degli spigoli in tempo reale

This commit is contained in:
Nicola Pievani
2017-05-02 16:40:03 +00:00
parent d866a1240a
commit b3f244b6e0
10 changed files with 341 additions and 132 deletions
+178 -55
View File
@@ -77,33 +77,54 @@ Public Class OptionsViewModel
End Set
End Property
' Carico i parametri associati al Bevel Up/Down
' Carico i parametri associati al Bevel Up
Public Property BevelUpIsChecked As Boolean
Get
Return OptionModule.m_bBevelUp
If OptionModule.m_bBevelUp = Visibility.Visible Then
Return True
Else
Return False
End If
'Return OptionModule.m_bBevelUp
End Get
Set(value As Boolean)
' se sto accendendo o spegmemdo un bevel
If QuestionSetBevel(CheckBevel(OptionModule.m_bBevelUp, value)) Then
OptionModule.m_bBevelUp = value
If value Then
OptionModule.m_bBevelUp = Visibility.Visible
Else
OptionModule.m_bBevelUp = Visibility.Collapsed
End If
If value Then
DefaultWritePrivateProfileString(S_EDGE, K_BEVELU_INI, "1")
Else
DefaultWritePrivateProfileString(S_EDGE, K_BEVELU_INI, "0")
End If
RefreshEdgeTypeList()
NotifyPropertyChanged("EdgeTypeList")
Else
Return
End If
End Set
End Property
' Carico i parametri associati al Bevel Down
Public Property BevelDownIsChecked As Boolean
Get
Return OptionModule.m_bBevelDown
If OptionModule.m_bBevelDown = Visibility.Visible Then
Return True
Else
Return False
End If
End Get
Set(value As Boolean)
If QuestionSetBevel(CheckBevel(OptionModule.m_bBevelDown, value)) Then
OptionModule.m_bBevelDown = value
If value Then
OptionModule.m_bBevelDown = Visibility.Visible
Else
OptionModule.m_bBevelDown = Visibility.Collapsed
End If
If value Then
DefaultWritePrivateProfileString(S_EDGE, K_BEVELD_INI, "1")
Else
@@ -163,63 +184,82 @@ Public Class OptionsViewModel
End Set
End Property
Public Property EdgeTypeList As ObservableCollection(Of String)
'Private Shared m_EdgeTypeList As New ObservableCollection(Of EdgeType)
Public Shared ReadOnly Property EdgeTypeList As ObservableCollection(Of EdgeType)
Get
Return Door.m_EdgeTypeList
End Get
Set(value As ObservableCollection(Of String))
' carico la lista degli EdgeType appena aggiornata
Door.m_EdgeTypeList = value
' aggiorno le lista pressenti nella pagina delle impostazioni
NotifyPropertyChanged("EdgeTypeList")
' verifico che esista una porta
If Not IsNothing(m_rfCurrDoor) Then
' Aggiorno le liste degli elementi
m_rfCurrDoor.NotifyPropertyChanged("EdgeTypeList")
'EdgeDoorControl(m_rfCurrDoor.LockEdgeType)
m_rfCurrDoor.NotifyPropertyChanged("LockEdgeType")
m_rfCurrDoor.NotifyPropertyChanged("HingeEdgeType")
End Property
' ''Public Property EdgeTypeList As ObservableCollection(Of String)
' '' Get
' '' Return Door.m_EdgeTypeList
' '' End Get
' '' Set(value As ObservableCollection(Of String))
' '' ' carico la lista degli EdgeType appena aggiornata
' '' Door.m_EdgeTypeList = value
' '' ' aggiorno le lista pressenti nella pagina delle impostazioni
' '' NotifyPropertyChanged("EdgeTypeList")
' '' ' verifico che esista una porta
' '' If Not IsNothing(m_rfCurrDoor) Then
' '' ' Aggiorno le liste degli elementi
' '' m_rfCurrDoor.NotifyPropertyChanged("EdgeTypeList")
' '' 'EdgeDoorControl(m_rfCurrDoor.LockEdgeType)
' '' m_rfCurrDoor.NotifyPropertyChanged("LockEdgeType")
' '' m_rfCurrDoor.NotifyPropertyChanged("HingeEdgeType")
' '' End If
' '' End Set
' ''End Property
Public Property LockEdgeType As EdgeType
Get
If m_LockEdgeType.IsActive = Visibility.Collapsed Then
m_LockEdgeType = EdgeTypeList(0)
End If
End Set
End Property
Public Property LockEdgeType As String
Get
Return OptionModule.m_LockEdgeType
Return m_LockEdgeType
End Get
Set(value As String)
Set(value As EdgeType)
OptionModule.m_LockEdgeType = value
DefaultWritePrivateProfileString(S_EDGE, K_LOCKEDGE_INI, OptionModule.m_LockEdgeType)
DefaultWritePrivateProfileString(S_EDGE, K_LOCKEDGE_INI, OptionModule.m_LockEdgeType.Name)
End Set
End Property
Public Property HingeEdgeType As String
Public Property HingeEdgeType As EdgeType
Get
Return OptionModule.m_HingeEdgeType
If m_HingeEdgeType.IsActive = Visibility.Collapsed Then
m_HingeEdgeType = EdgeTypeList(0)
End If
Return m_HingeEdgeType
End Get
Set(value As String)
OptionModule.m_HingeEdgeType = value
DefaultWritePrivateProfileString(S_EDGE, K_HINGEDGE_INI, OptionModule.m_HingeEdgeType)
Set(value As EdgeType)
m_HingeEdgeType = value
DefaultWritePrivateProfileString(S_EDGE, K_HINGEDGE_INI, OptionModule.m_HingeEdgeType.Name)
End Set
End Property
Public Property TopType As String
Public Property TopType As EdgeType
Get
If m_TopType.IsActive = Visibility.Collapsed Then
m_TopType = EdgeTypeList(0)
End If
Return OptionModule.m_TopType
End Get
Set(value As String)
Set(value As EdgeType)
OptionModule.m_TopType = value
DefaultWritePrivateProfileString(S_EDGE, K_TOPEDGE_INI, OptionModule.m_TopType)
DefaultWritePrivateProfileString(S_EDGE, K_TOPEDGE_INI, OptionModule.m_TopType.Name)
End Set
End Property
Public Property BottomType As String
Public Property BottomType As EdgeType
Get
If m_BottomType.IsActive = Visibility.Collapsed Then
m_BottomType = EdgeTypeList(0)
End If
Return OptionModule.m_BottomType
End Get
Set(value As String)
Set(value As EdgeType)
OptionModule.m_BottomType = value
DefaultWritePrivateProfileString(S_EDGE, K_BOTTOMEDGE_INI, OptionModule.m_BottomType)
DefaultWritePrivateProfileString(S_EDGE, K_BOTTOMEDGE_INI, OptionModule.m_BottomType.Name)
End Set
End Property
@@ -525,57 +565,104 @@ Public Class OptionsViewModel
#End Region
' Aggiorno la lista dei bevel
Private Sub RefreshEdgeTypeList()
' creo una variabile locale di tipo ObservableCollection
Dim rEdgeTypeList As New ObservableCollection(Of String)
' Carico questa lista leggendo il file Default.ini
DefaultGetPrivateProfileObservableCollection(S_EDGE, K_EDGETYPE_LIST_INI, rEdgeTypeList)
' Confronto la lista appena creata con le indicazioni raccolte nell'OptionModule (verifico se i bevel up e down sono selezionati)
' quindi aggiorno la lista eliminando se serve i bevel
SetEdgeTypeList(rEdgeTypeList, OptionModule.m_bBevelUp, OptionModule.m_bBevelDown)
' richiamo la proprietà pubblica di questa classe
EdgeTypeList = rEdgeTypeList
End Sub
'' '' Aggiorno la lista dei bevel
' ''Private Sub RefreshEdgeTypeList()
' '' ' creo una variabile locale di tipo ObservableCollection
' '' Dim rEdgeTypeList As New ObservableCollection(Of String)
' '' ' Carico questa lista leggendo il file Default.ini
' '' DefaultGetPrivateProfileObservableCollection(S_EDGE, K_EDGETYPE_LIST_INI, rEdgeTypeList)
' '' ' Confronto la lista appena creata con le indicazioni raccolte nell'OptionModule (verifico se i bevel up e down sono selezionati)
' '' ' quindi aggiorno la lista eliminando se serve i bevel
' '' SetEdgeTypeList(rEdgeTypeList, OptionModule.m_bBevelUp, OptionModule.m_bBevelDown)
' '' ' richiamo la proprietà pubblica di questa classe
' '' EdgeTypeList = rEdgeTypeList
' ''End Sub
' Controllo di eliminare un bevel dalla lista
Private Function CheckBevel(bBevel As Boolean, bValue As Boolean) As Integer
' Controllo di eliminare un bevel dalla lista: 1 se accendo un bevel, 2 se spengo un bevel, -1 tutti i casi che non sono questi
Private Function CheckBevel(VisibilityBevel As Visibility, bValue As Boolean) As Integer
Dim bAnser As Integer
Dim bBevel As Boolean
If VisibilityBevel = Visibility.Visible Then
bBevel = True
Else
bBevel = False
End If
If bBevel And Not bValue Then
' significa che sta togliendo dalla lista
bAnser = 1
ElseIf Not bBevel And bValue Then
' sto aggiungendo un bevel alla lista
bAnser = 2
Else
' non accade nulla
bAnser = -1
End If
Return bAnser
End Function
' chiedo se vuole continuare
' chiedo se vuole continuare: vero se cambia li lista
Private Function QuestionSetBevel(bCheckBevel As Integer) As Boolean
If bCheckBevel = 1 Then
If m_rfCurrDoor.LockEdgeType = "BU" Or m_rfCurrDoor.LockEdgeType = "BD" Or m_rfCurrDoor.HingeEdgeType = "BU" Or m_rfCurrDoor.HingeEdgeType = "BD" Then
' controllo se to oliminando da uno degli elementi della lista: se si chiedo di continuare
If m_rfCurrDoor.LockEdgeType.Name = "BU" Or m_rfCurrDoor.LockEdgeType.Name = "BD" Or m_rfCurrDoor.HingeEdgeType.Name = "BU" Or m_rfCurrDoor.HingeEdgeType.Name = "BD" Then
' Se blocco tutto non accade nulla
If MessageBox.Show("It is a bevel of the current door. Do You want to proced?", "Caution", MessageBoxButton.YesNo, MessageBoxImage.Asterisk, MessageBoxResult.No) = MessageBoxResult.No Then
Return False
Else
' se decido di continuare
' se decido di continuare
Return True
End If
Else
' se non sono presenti elementi nella lista
Return True
End If
' se sto attivando un bevel nella lista
ElseIf bCheckBevel = 2 Then
Return True
Else
' per tutti gli altri casi (-1) non accade nulla
Return False
End If
End Function
' creo la lista di oggetti aggiornando la visibilità dei bevel Up e Down
Public Sub RefreshEdgeTypeList()
For Index = 0 To Door.m_EdgeTypeList.Count - 1
If m_StaticEdgeTypeList(Index) = "BU" Then
Door.m_EdgeTypeList(Index).Name = m_StaticEdgeTypeList(Index)
Door.m_EdgeTypeList(Index).IsActive = OptionModule.m_bBevelUp
ElseIf m_StaticEdgeTypeList(Index) = "BD" Then
Door.m_EdgeTypeList(Index).Name = m_StaticEdgeTypeList(Index)
Door.m_EdgeTypeList(Index).IsActive = OptionModule.m_bBevelDown
Else
Door.m_EdgeTypeList(Index).Name = m_StaticEdgeTypeList(Index)
Door.m_EdgeTypeList(Index).IsActive = Visibility.Visible
End If
Next
NotifyPropertyChanged("LockEdgeType")
m_rfCurrDoor.NotifyPropertyChanged("LockEdgeType")
NotifyPropertyChanged("HingeEdgeType")
m_rfCurrDoor.NotifyPropertyChanged("HingeEdgeType")
NotifyPropertyChanged("TopType")
m_rfCurrDoor.NotifyPropertyChanged("TopType")
NotifyPropertyChanged("BottomType")
m_rfCurrDoor.NotifyPropertyChanged("BottomType")
End Sub
Public Shared Sub CreateEdgeTypeList()
For Index = 0 To m_StaticEdgeTypeList.Count - 1
If m_StaticEdgeTypeList(Index) = "BU" Then
Door.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), OptionModule.m_bBevelUp))
ElseIf m_StaticEdgeTypeList(Index) = "BD" Then
Door.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), OptionModule.m_bBevelDown))
Else
Door.m_EdgeTypeList.Add(New EdgeType(m_StaticEdgeTypeList(Index), Visibility.Visible))
End If
Next
End Sub
Sub New(rCurrDoor As Door)
m_rfCurrDoor = rCurrDoor
End Sub
#Region "COMMANDS"
@@ -638,3 +725,39 @@ Public Class OptionsViewModel
End Sub
End Class
Public Class EdgeType
Implements INotifyPropertyChanged
Private m_Name As String
Public Property Name As String
Get
Return m_Name
End Get
Set(value As String)
m_Name = value
End Set
End Property
Private m_IsActive As Visibility
Public Property IsActive As Visibility
Get
Return m_IsActive
End Get
Set(value As Visibility)
m_IsActive = value
NotifyPropertyChanged("IsActive")
End Set
End Property
Sub New(sName As String, bIsActive As Visibility)
m_Name = sName
m_IsActive = bIsActive
End Sub
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class