diff --git a/Assembly/Assembly.vb b/Assembly/Assembly.vb
index a4c643c..2c61a4a 100644
--- a/Assembly/Assembly.vb
+++ b/Assembly/Assembly.vb
@@ -1706,13 +1706,14 @@ Public Class Assembly
SetRabbetJamb(Map.refAssemblyPageVM.CurrAssembly.RightJamb, sThicknessHead, sOverlapHinge, sLightUp)
End Select
End Sub
+
Private Sub SetRabbetJamb(ByRef Jamb As Part, sThicknessHead As String, sOverlap As String, sLightUp As String)
- Dim CompoListIndex As Integer = CompoPanelVM.CompoTypeList.Count - 1
+ Dim CompoListIndex As Integer = Map.refCompoPanelVM.CompoTypeList.Count - 1
Dim bRabbet As Boolean = False
Dim IndexCompo As Integer
If Jamb.CompoList.Count > 0 Then
For IndexCompo = 0 To Jamb.CompoList.Count - 1
- If Jamb.CompoList(IndexCompo).CompoType.DDFName = CompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
+ If Jamb.CompoList(IndexCompo).CompoType.DDFName = Map.refCompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(0) Then
bRabbet = True
Exit For
@@ -1724,15 +1725,16 @@ Public Class Assembly
SetTopRabbetParam(sThicknessHead, sOverlap, Jamb, IndexCompo, sLightUp)
Else
' lo aggiungo e lo modifico
- Jamb.AddNewCompo(CompoPanelVM.CompoTypeList(CompoListIndex))
+ Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex))
SetTopRabbetParam(sThicknessHead, sOverlap, Jamb, Jamb.CompoList.Count - 1, sLightUp)
End If
Else
' lo aggiungo e lo modifico
- Jamb.AddNewCompo(CompoPanelVM.CompoTypeList(CompoListIndex))
+ Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex))
SetTopRabbetParam(sThicknessHead, sOverlap, Jamb, 0, sLightUp)
End If
End Sub
+
Private Sub SetTopRabbetParam(sThicknessHead As String, sOverlapTop As String, ByRef Jamb As Part, IndexCompo As Integer, sLightUp As String)
Dim CurrCompoParam As CompoParam = Jamb.CompoList(IndexCompo).CompoParamList(1)
If TypeOf CurrCompoParam Is TextBoxParam Then
@@ -1867,13 +1869,13 @@ Public Class Assembly
'Dim IndexHinge As Integer = 2
'Dim IndexBottom As Integer = 1
- Dim CompoListIndex As Integer = CompoPanelVM.CompoTypeList.Count - 1
+ Dim CompoListIndex As Integer = Map.refCompoPanelVM.CompoTypeList.Count - 1
Dim bRabbet As Boolean = False
Dim IndexCompo As Integer
If m_Exterior Then
If Jamb.CompoList.Count > 0 Then
For IndexCompo = 0 To Jamb.CompoList.Count - 1
- If Jamb.CompoList(IndexCompo).CompoType.DDFName = CompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
+ If Jamb.CompoList(IndexCompo).CompoType.DDFName = Map.refCompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(nIndexSide) Then
bRabbet = True
Exit For
@@ -1884,20 +1886,20 @@ Public Class Assembly
SetHingeRabbetParam(sThicknessDoor, sDeltaT, sOverLap, Jamb, Jamb.CompoList(IndexCompo), nIndexSide)
Else
' lo aggiungo e lo modifico
- Dim Local_Compo As Compo = Jamb.AddNewCompo(CompoPanelVM.CompoTypeList(CompoListIndex))
+ Dim Local_Compo As Compo = Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex))
DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).ItemList(nIndexSide)
SetHingeRabbetParam(sThicknessDoor, sDeltaT, sOverLap, Jamb, Local_Compo, nIndexSide)
End If
Else
' lo aggiungo e lo modifico
- Dim Local_Compo As Compo = Jamb.AddNewCompo(CompoPanelVM.CompoTypeList(CompoListIndex))
+ Dim Local_Compo As Compo = Jamb.AddNewCompo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex))
DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Local_Compo.CompoParamList(0), ComboBoxParam).ItemList(nIndexSide)
SetHingeRabbetParam(sThicknessDoor, sDeltaT, sOverLap, Jamb, Local_Compo, nIndexSide)
End If
'
Else
For IndexCompo = 0 To Jamb.CompoList.Count - 1
- If Jamb.CompoList(IndexCompo).CompoType.DDFName = CompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
+ If Jamb.CompoList(IndexCompo).CompoType.DDFName = Map.refCompoPanelVM.CompoTypeList(CompoListIndex).DDFName Then
If DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).SelItem = DirectCast(Jamb.CompoList(IndexCompo).CompoParamList(0), ComboBoxParam).ItemList(nIndexSide) Then
bRabbet = True
Exit For
diff --git a/AssemblyManager/AssemblyManagerVM.vb b/AssemblyManager/AssemblyManagerVM.vb
index f44dfb3..b21e5bf 100644
--- a/AssemblyManager/AssemblyManagerVM.vb
+++ b/AssemblyManager/AssemblyManagerVM.vb
@@ -61,10 +61,12 @@ Public Class AssemblyManagerVM
NewAssName.SelAssembly.GetArrayPartDoor(0).Door.SwingTypeList = OptionModule.m_SwingTypeList
DdfFile.WriteDDFPart(NewAssName.SelAssembly.GetArrayPartDoor(0).Door, sTempFile, False, False)
ExecDoors(Map.refSceneManagerVM.ProjectScene, sTempFile)
+ EgtZoom(ZM.ALL)
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage
Else
DdfFile.WriteDDFAssembly(NewAssName.SelAssembly, sTempFile, False)
ExecDoors(Map.refSceneManagerVM.ProjectScene, sTempFile)
+ EgtZoom(ZM.ALL)
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
End If
Return
@@ -108,10 +110,12 @@ Public Class AssemblyManagerVM
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then
DdfFile.WriteDDFPart(OpenedAssName.SelAssembly.GetArrayPartDoor(0).Door, sTempFile, True, False)
ExecDoors(Map.refSceneManagerVM.ProjectScene, sTempFile)
+ EgtZoom(ZM.ALL)
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage
Else
DdfFile.WriteDDFAssembly(OpenedAssName.SelAssembly, sTempFile, True)
ExecDoors(Map.refSceneManagerVM.ProjectScene, sTempFile)
+ EgtZoom(ZM.ALL)
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
End If
Return True
diff --git a/AssemblyManager/AssemblyName.vb b/AssemblyManager/AssemblyName.vb
index 33e6cea..df9e846 100644
--- a/AssemblyManager/AssemblyName.vb
+++ b/AssemblyManager/AssemblyName.vb
@@ -22,11 +22,20 @@ Public Class AssemblyName
End Get
Set(value As Boolean)
m_IsModified = value
+ If Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nHardwarePage Then
+ If m_IsModified Then
+ Map.refMainWindowVM.ProjectNameMsg = "HarwareManager *"
+ Else
+ Map.refMainWindowVM.ProjectNameMsg = "HarwareManager"
+ End If
+ Return
+ End If
If m_IsModified Then
If Not m_GraphicName.Contains("*") Then m_GraphicName &= "*"
Else
m_GraphicName = Path.GetFileNameWithoutExtension(m_Name)
End If
+
NotifyPropertyChanged("GraphicName")
End Set
End Property
diff --git a/CompoMatch.vb b/CompoMatch.vb
index 9fc90e6..d04e485 100644
--- a/CompoMatch.vb
+++ b/CompoMatch.vb
@@ -131,10 +131,45 @@ Module CompoMatch
Return True
End Function
- Friend Function ResetCompoParam() As Boolean
+ Friend Function ResetHMD() As Boolean
EgtLuaResetGlobVar("STU")
Return True
End Function
+ Friend Function LoadTableGeometry() As Boolean
+ EgtLuaCreateGlobTable("HMD")
+ Dim sLuaPath As String = IniFile.m_CompoDir & "\TabellaLua.lua"
+ ' Verifico esistenza file Matching nel direttorio passato
+ If Not File.Exists(sLuaPath) Then
+ EgtOutLog("Matching error: missing file (" & sLuaPath & ")")
+ Return False
+ End If
+ ' Parsing
+ If Not EgtLuaExecFile(sLuaPath) Then
+ EgtOutLog("Matching error: executing file (" & sLuaPath & ")")
+ Return False
+ End If
+ Return True
+ End Function
+
+ Friend Function ReserchInTable(sNameHardware As String, sNameParamLua As String, ByRef sNameGeometry As String) As Boolean
+ ' Assegno dati parametro
+ EgtLuaSetGlobStringVar("HMD.HardwareName", sNameHardware)
+ EgtLuaSetGlobStringVar("HMD.Parameter", sNameParamLua)
+
+ If Not EgtLuaCallFunction("HMD.RicercaNellaTabella") Then
+ EgtOutLog("Error in HMD.RicercaNellaTabella")
+ Return False
+ End If
+ ' Recupero stato di visualizzazione
+ EgtLuaGetGlobStringVar("HMD.GeometryName", sNameGeometry)
+ Return True
+ End Function
+
+ Friend Function ResetCompoParam() As Boolean
+ EgtLuaResetGlobVar("HMD")
+ Return True
+ End Function
+
End Module
diff --git a/CompoPanel/CompoPanelHardwareV.xaml b/CompoPanel/CompoPanelHardwareV.xaml
new file mode 100644
index 0000000..558903d
--- /dev/null
+++ b/CompoPanel/CompoPanelHardwareV.xaml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CompoPanel/CompoPanelHardwareV.xaml.vb b/CompoPanel/CompoPanelHardwareV.xaml.vb
new file mode 100644
index 0000000..4f93dfd
--- /dev/null
+++ b/CompoPanel/CompoPanelHardwareV.xaml.vb
@@ -0,0 +1,3 @@
+Public Class CompoPanelHardware
+
+End Class
diff --git a/CompoPanel/CompoPanelVM.vb b/CompoPanel/CompoPanelVM.vb
index 4589ee1..a823aa7 100644
--- a/CompoPanel/CompoPanelVM.vb
+++ b/CompoPanel/CompoPanelVM.vb
@@ -6,14 +6,16 @@ Imports System.IO
Public Class CompoPanelVM
Implements INotifyPropertyChanged
+ Private m_PageName As String = String.Empty
+
Public ReadOnly Property GoToAssembly As String
Get
Return "GoToAssembly"
End Get
End Property
- Private Shared m_CompoTypeList As New ObservableCollection(Of CompoType)
- Public Shared ReadOnly Property CompoTypeList As ObservableCollection(Of CompoType)
+ Private m_CompoTypeList As New ObservableCollection(Of CompoType)
+ Public ReadOnly Property CompoTypeList As ObservableCollection(Of CompoType)
Get
Return m_CompoTypeList
End Get
@@ -47,8 +49,11 @@ Public Class CompoPanelVM
' definizione comando
Private m_EnterRefreshCmd As ICommand
- Sub New()
- Map.SetRefCompoPanelVM(Me)
+ Sub New(Page As String)
+ m_PageName = Page
+ 'Map.SetRefCompoPanelVM(Me)
+ 'Map.SetRefCompoPaneHardwarelVM(Me)
+ If m_CompoTypeList.Count > 0 Then Return ' se la lista è già caricata esco (Lista di tipo shared)
Dim IndexCompoOrder = 0
' Lettura file ini per generare bottoni
Dim Index As Integer = 1
@@ -72,6 +77,7 @@ Public Class CompoPanelVM
GetPrivateProfileJambSide(S_POSITIONSIDE, K_SIDE, Side, CurrCompoPath)
If CompoPanelList(IndexCompoOrder) = CompoNameDDF Then
m_CompoTypeList.Add(New CompoType(CompoName, CompoNameDDF, CompoArray(Index), Side))
+ ' aggiungere il caricamento delle liste
Exit For
End If
End If
@@ -103,19 +109,43 @@ Public Class CompoPanelVM
'''
Public Sub CompoBtn(param As Object)
- Dim m_CurrCompoType As CompoType = DirectCast(param, CompoType)
- If Not IsNothing(Map.refPartPageVM.CurrPart) Then
- Dim NewCompo As Compo = Map.refPartPageVM.CurrPart.AddNewCompo(m_CurrCompoType)
- ' appena aggiungo una componente nuova calcolo le sue componenti correttamente modificate
- If Not IsNothing(NewCompo.refJambCompo) Then
- If Not LoadCompoParam(NewCompo, Map.refPartPageVM.CurrPart.TypePart) Then Return
- Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(NewCompo)
- ResetCompoParam()
+ ' distinguo il modo di caricare il i valori a secondo della pagina aperta
+ If Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nHardwarePage Then
+ ' devo controllare se devo salvare le modifiche fatte
+ If Not IsNothing(Map.refHardwarePageVM) Then ' se la pagina è aperta
+ If Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then ' se un hardware esiste
+ If Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nCancel Then Return ' controllo se devo salvare le modifiche
+ End If
+ ' selezione il nuovo Hardware
+ Dim m_CurrCompoType As CompoType = DirectCast(param, CompoType)
+ For IndexCompoType As Integer = 0 To Map.refCompoPanelHardwareVM.CompoTypeList.Count - 1
+ If m_CurrCompoType.Name <> Map.refCompoPanelHardwareVM.CompoTypeList(IndexCompoType).Name Then
+ Map.refCompoPanelHardwareVM.CompoTypeList(IndexCompoType).IsSelectedBtn = False
+ End If
+ Next
+ ' ogni volta che clicco il bottone definisco un nuovo Hardware
+ Map.refHardwarePageVM.CurrHardware = New Hardware
+ Map.refHardwarePageVM.VisibilityGeneral = Visibility.Visible
+ Map.refHardwarePageVM.CurrHardware.LoadTemplate(m_CurrCompoType)
+ End If
+ '------------------------------------------------------------------------------------------------------------------------------
+ Else ' se non sono nella configurazione Hardware
+ Dim m_CurrCompoType As CompoType = DirectCast(param, CompoType)
+ m_CurrCompoType.LoadListTemplate()
+ If Not IsNothing(Map.refPartPageVM.CurrPart) Then
+ Dim NewCompo As Compo = Map.refPartPageVM.CurrPart.AddNewCompo(m_CurrCompoType)
+ ' appena aggiungo una componente nuova calcolo le sue componenti correttamente modificate
+ If Not IsNothing(NewCompo.refJambCompo) Then
+ If Not LoadCompoParam(NewCompo, Map.refPartPageVM.CurrPart.TypePart) Then Return
+ Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(NewCompo)
+ ResetCompoParam()
+ End If
+ Map.refSceneManagerVM.RefreshBtn()
+ Else
+ MessageBox.Show(EgtMsg(50108), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
End If
- Map.refSceneManagerVM.RefreshBtn()
- Else
- MessageBox.Show(EgtMsg(50108), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
End If
+
End Sub
#End Region ' CompoBtnCommand
@@ -140,8 +170,15 @@ Public Class CompoPanelVM
'''
Public Sub GoToAssemblyBtn(param As Object)
- Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
- Map.refSceneManagerVM.RefreshBtn()
+ If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
+ Map.refSceneManagerVM.RefreshBtn()
+ Else
+ Map.refCompoPanelVM.GoBackVisibility = Visibility.Collapsed
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage
+ Map.refSceneManagerVM.RefreshBtn()
+ End If
+
End Sub
#End Region ' GoToAssemblyBtnCommand
diff --git a/CompoPanel/CompoType.vb b/CompoPanel/CompoType.vb
index 6608914..22ad2bb 100644
--- a/CompoPanel/CompoType.vb
+++ b/CompoPanel/CompoType.vb
@@ -1,4 +1,22 @@
-Public Class CompoType
+Imports System.IO
+Imports System.Collections.ObjectModel
+Imports EgtWPFLib5
+
+Public Class CompoType
+ Inherits VMBase
+
+ Public Brand As New ObservableCollection(Of CompoBrandDir)
+
+ Private m_IsSelectedBtn As Boolean = False
+ Public Property IsSelectedBtn As Boolean
+ Get
+ Return m_IsSelectedBtn
+ End Get
+ Set(value As Boolean)
+ m_IsSelectedBtn = value
+ NotifyPropertyChanged("IsSelectedBtn")
+ End Set
+ End Property
Private m_Name As String
Public ReadOnly Property Name As String
@@ -40,11 +58,35 @@
m_JambSide = JambSide
End Sub
+ ' lista dei marchi
+ Private m_BrandListPart As New ObservableCollection(Of String)
+ Public Property BrandListPart As ObservableCollection(Of String)
+ Get
+ Return m_BrandListPart
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_BrandListPart = value
+ End Set
+ End Property
+
+ Public Function LoadListTemplate() As Boolean
+ Brand.Clear()
+ GetDirectoryCompoModel(m_Path, Brand)
+ If Brand.Count > 0 Then
+ For IndexModel As Integer = 0 To Brand.Count - 1
+ m_BrandListPart.Add(Brand(IndexModel).ModelDirGraphic)
+ Next
+ End If
+
+ Return True
+ End Function
+
Sub New(sName As String, sDDFName As String, sPath As String, sJambSide As String)
m_Name = sName
m_DDFName = sDDFName
m_Path = sPath
m_JambSide = sJambSide
+ LoadListTemplate()
End Sub
End Class
diff --git a/Constants/ConstCompo.vb b/Constants/ConstCompo.vb
index ae125aa..0d8d2df 100644
--- a/Constants/ConstCompo.vb
+++ b/Constants/ConstCompo.vb
@@ -58,6 +58,7 @@ Module ConstCompo
Public Const S_POSITIONSIDE As String = "PositionSide"
Public Const K_SIDE As String = "Side"
Public Const S_GR_PARAM_DEFAULT = "Graphic parameters"
+ Public Const S_GR_PARAM_HARDWARE = "Parameters"
Public Const K_PARAM As String = "Param"
' Alcune stringhe notevoli dei file DDF
@@ -76,6 +77,9 @@ Module ConstCompo
Public Const LUA_EXTENSION As String = ".lua"
Public Const NGE_EXTENSION As String = ".nge"
+ ' Layer
+ Public Const DIM_HINGE As String = "DIM_HINGE"
+ Public Const DIM_DOOR As String = "DIM_DOOR"
' Nome file di matching tra componenti su ante e telaio
Public Const MATCHING_FILE_NAME As String = "Matching.lua"
diff --git a/Constants/ConstGen.vb b/Constants/ConstGen.vb
index c0320ad..649a5aa 100644
--- a/Constants/ConstGen.vb
+++ b/Constants/ConstGen.vb
@@ -43,6 +43,7 @@ Module ConstGen
Public Const TEMPLATE_DIR As String = "Template"
' File ddf utilizzato per il disegno corrente (porta, assemblato, singola parte)
Public Const TEMP_FILE As String = "CurrPart.ddf"
+ Public Const TEMP_FILE_HARDWARE As String = "CurrHardware.lua"
' File con gli errori della parte di disegno (lua)
Public Const TEMP_PART_TXT As String = "CurrPart.txt"
End Module
diff --git a/Constants/ConstIni.vb b/Constants/ConstIni.vb
index c38c5a6..c5d0d97 100644
--- a/Constants/ConstIni.vb
+++ b/Constants/ConstIni.vb
@@ -28,6 +28,7 @@ Module ConstIni
Public Const K_RUNAS As String = "RunAs"
Public Const K_DISPOSITION As String = "Disposition"
Public Const K_SMARTHELP As String = "SmartHelp"
+ Public Const K_DISABLEHM As String = "DisableHM"
Public Const S_LANGUAGES As String = "Languages"
Public Const K_LANGUAGE As String = "Language"
diff --git a/Converter/SplitConverter.vb b/Converter/SplitConverter.vb
new file mode 100644
index 0000000..c84a02c
--- /dev/null
+++ b/Converter/SplitConverter.vb
@@ -0,0 +1,14 @@
+Public Class SplitConverter
+ Implements IValueConverter
+
+ Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
+ Dim dValue As Double = CDbl(value)
+ Dim dParam As Double = CDbl(parameter)
+ Return dValue / dParam
+ End Function
+
+ Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
+ Throw New NotImplementedException
+ End Function
+
+End Class
\ No newline at end of file
diff --git a/Converter/TemplateListConverter.vb b/Converter/TemplateListConverter.vb
index 6fd1e0c..a52af12 100644
--- a/Converter/TemplateListConverter.vb
+++ b/Converter/TemplateListConverter.vb
@@ -1,8 +1,10 @@
-Public Class TemplateListConverter
+Imports System.Collections.ObjectModel
+
+Public Class TemplateListConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
- Dim TemplateList As List(Of String) = DirectCast(value, List(Of String))
+ Dim TemplateList As ObservableCollection(Of String) = DirectCast(value, ObservableCollection(Of String))
For Index = TemplateList.Count - 1 To 0 Step -1
Dim Template As String = TemplateList(Index)
If Not Map.refPartPageVM.CurrPart.TypePart.Contains("F") Then
diff --git a/DdfFile.vb b/DdfFile.vb
index 42f7182..8fd02f0 100644
--- a/DdfFile.vb
+++ b/DdfFile.vb
@@ -268,6 +268,261 @@ Friend Module DdfFile
End If
End Sub
+ ' la funzione è quasi identica alla precedente per piccole differenze (evito di richiamare dei riferimenti all'assemblato)
+ Friend Sub WriteDDFPartForTestHardware(Part As Part, sPath As String, bIsDDF As Boolean, bIsForAssembly As Boolean)
+ DDFIsCorrect = False
+ ' pulisco lista prima di iniziare a scrivere
+ Dim DdfFileContent As New List(Of String)
+ ' quindi significa che non è mai stato caricato il valore
+ DdfFileContent.Add("#EGTDOORCREATOR")
+ If Not IsNothing(Part.TypePart) Then
+ DdfFileContent.Add("#" & PrintTitleDDFPart(Part.TypePart))
+ End If
+ DdfFileContent.Add("")
+ DdfFileContent.Add("produce: " & If(Part.IsActive, "true", "false"))
+ 'Genero una lista di stringhe
+ DdfFileContent.Add("")
+ If IsNothing(Part.Measure) Then Part.Measure = ConvertMmUnitsToString(OptionModule.m_bIsMmUnit)
+ DdfFileContent.Add(ConstCompo.S_MEASURES & ": " & Part.Measure)
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then
+ Part.Code = "TestDoorHardware"
+ DdfFileContent.Add(ConstCompo.S_CODE & ": " & Part.Code)
+ DdfFileContent.Add("")
+ ElseIf Not IsNothing(Part.TypePart) And OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ Part.Code = " " & PrintTitleDDFPart(Part.TypePart)
+ DdfFileContent.Add(ConstCompo.S_CODE & ": " & Part.Code)
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ ElseIf IsNothing(Part.TypePart) And OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ DdfFileContent.Add(ConstCompo.S_CODE & ": " & "1111")
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ End If
+
+ DdfFileContent.Add(ConstCompo.S_ORDER & ":")
+ ' Probabilmente da cambiare
+ If Not IsNothing(Part.Customer) Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_CUSTOMER & ": " & Part.Customer)
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_CUSTOMER & ": ")
+ End If
+ If Not IsNothing(Part.Elevation) Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_ELEVATION & ": " & Part.Elevation)
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_ELEVATION & ": ")
+ End If
+ If Not IsNothing(Part.Project) Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_PROJECT & ": " & Part.Project)
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_PROJECT & ": ")
+ End If
+ If Not IsNothing(Part.PO) Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_PO & ": " & Part.PO)
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_PO & ": ")
+ End If
+ If Not IsNothing(Part.Line) Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_LINE & ": " & Part.Line)
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_LINE & ": ")
+ End If
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ DdfFileContent.Add(ConstCompo.S_DATE & ":" & " " & System.DateTime.Now.ToString("dd/MM/yyyy"))
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ ' è specificato il tipo significa che abbiamo un assemblato
+ DdfFileContent.Add("piece: " & Part.TypePart)
+ DdfFileContent.Add("")
+ ''-------------------------------------------------------------------------------------------------------------------------
+ '' non ho considerato di fare componento da inserire sui jamb
+
+ '' posizionamento porte
+ 'If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ ' If Not IsNothing(Part.TypePart) Then
+ ' ' il posizionamento della prima porta sta nell'origine
+ ' If Part.TypePart = "DO_1" Then
+ ' DdfFileContent.Add("position: ")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "x: " & "0")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "y: " & "0")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "z: " & "0")
+ ' ElseIf Part.TypePart = "DO_2" Then
+ ' ' si trova traslata verso destra dello spessore DO_1 sommato a LightLock"
+ ' Dim x_DO_1 As Double
+ ' Dim dLightLock As Double
+ ' StringToDouble(Map.refAssemblyPageVM.CurrAssembly.GetArrayPartDoor(0).Door.Width, x_DO_1)
+ ' StringToDouble(Map.refAssemblyPageVM.CurrAssembly.LightLock, dLightLock)
+ ' Dim x As String = DoubleToString(x_DO_1 + dLightLock, 4)
+ ' DdfFileContent.Add("position: ")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "x: " & x)
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "y: " & "0")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "z: " & "0")
+ ' ' Jamb Sinistro serratura
+ ' ElseIf Part.TypePart.Contains("FL_") Then
+ ' Dim x As String = PositionJamb_X(Part)
+ ' Dim y As String = PositionJamb_Y(Part)
+ ' Dim z As String = PositionJamb_Z(Part)
+ ' DdfFileContent.Add("position: ")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "x: " & x)
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "y: " & y)
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "z: " & z)
+ ' ElseIf Part.TypePart.Contains("FR_") Then
+ ' DdfFileContent.Add("position: ")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "x: " & PositionJamb_X(Part))
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "y: " & PositionJamb_Y(Part))
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "z: " & PositionJamb_Z(Part))
+ ' ElseIf Part.TypePart.Contains("FT_") Then
+ ' DdfFileContent.Add("position: ")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "x: " & PositionJamb_X(Part))
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "y: " & PositionJamb_Y(Part))
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "z: " & PositionJamb_Z(Part))
+ ' ElseIf Part.TypePart.Contains("FB_") Then
+ ' DdfFileContent.Add("position: ")
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "x: " & PositionJamb_X(Part))
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "y: " & PositionJamb_Y(Part))
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & "z: " & PositionJamb_Z(Part))
+ ' End If
+ ' DdfFileContent.Add("")
+ ' End If
+ 'End If
+ ''-------------------------------------------------------------------------------------------------------------------------
+
+ Dim dVal As Double = 0
+ DdfFileContent.Add(ConstCompo.S_SIZE & ":")
+ If Not StringToDouble(Part.Width, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_WIDTH), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_WIDTH & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_WIDTH & ": " & Part.Width)
+ End If
+ End If
+
+ If Not StringToDouble(Part.Height, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_HEIGHT), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_HEIGHT & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_HEIGHT & ": " & Part.Height)
+ End If
+
+ End If
+
+ If Not StringToDouble(Part.Thickness, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_THICKNESS), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_THICKNESS & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_THICKNESS & ": " & Part.Thickness)
+ End If
+ End If
+
+ '' aggiungo il peso della porta
+ 'If Part.IsCheckedWeight = Visibility.Visible Then
+ ' If Not StringToDouble(Part.Weight, dVal) Then
+ ' MessageBox.Show(String.Format(EgtMsg(50141), S_WEIGHT), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ ' Return
+ ' Else
+ ' If bIsDDF Then
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.S_WEIGHT & ": " & DoubleToString(dVal, 5))
+ ' Else
+ ' DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.S_WEIGHT & ": " & Part.Weight)
+ ' End If
+ ' End If
+ ' DdfFileContent.Add("")
+ ' DdfFileContent.Add(ConstCompo.S_WEIGHT & ": " & Part.Weight)
+ 'End If
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ DdfFileContent.Add("" & ConstCompo.S_SWING & ": " & Part.Swing)
+ ' aggiungo una riga vuota per separare la lista successiva
+ DdfFileContent.Add("")
+ '----------------------------------------------------------------------------------------------------------------------------------------------------
+ ' aggiungo il secure nullo al DDF
+ If Part.TypePart.Contains("DO_") Then
+ DdfFileContent.Add("" & ConstCompo.S_SECURE & ": " & SetSecure(Part.Swing, Part.DispositionItem.Name, Part.Secure))
+ ' aggiungo una riga vuota per separare la lista successiva
+ Else
+ DdfFileContent.Add("" & ConstCompo.S_SECURE & ": " & "DN")
+ End If
+
+ DdfFileContent.Add("")
+ '----------------------------------------------------------------------------------------------------------------------------------------------------
+ DdfFileContent.Add("" & ConstCompo.S_PROFILES & ":")
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_LOCKEDGE & ": " & SetBevel(Part.TypePart, Part.LockEdgeType.Name, Part.DispositionItem.Name, Part.Swing))
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.LockEdgeMachining))
+ If Not StringToDouble(Part.LockEdgeOverMaterial, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_LOCKEDGEOVERMATERIAL_INI), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & Part.LockEdgeOverMaterial)
+ End If
+ End If
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_HINGEEDGE & ": " & SetBevel(Part.TypePart, Part.HingeEdgeType.Name, Part.DispositionItem.Name, Part.Swing))
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.HingeEdgeMachining))
+ If Not StringToDouble(Part.HingeEdgeOverMaterial, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_HINGEDGEOVERMATERIAL_INI), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & Part.HingeEdgeOverMaterial)
+ End If
+ End If
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_TOP & ": " & SetBevel(Part.TypePart, Part.TopType.Name, Part.DispositionItem.Name, Part.Swing))
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.TopMachining))
+ If Not StringToDouble(Part.TopOverMaterial, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_TOPOVERMATERIAL_INI), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & Part.TopOverMaterial)
+ End If
+ End If
+ DdfFileContent.Add(ConstCompo.DDF_SPACE3 & ConstCompo.K_BOTTOM & ": " & SetBevel(Part.TypePart, Part.BottomType.Name, Part.DispositionItem.Name, Part.Swing))
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_MACHINING & ": " & ConvertBooleanToOnOff(Part.BottomMachining))
+ If Not StringToDouble(Part.BottomOverMaterial, dVal) Then
+ MessageBox.Show(String.Format(EgtMsg(50141), K_BOTTOMOVERMATERIAL_INI), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ Return
+ Else
+ If bIsDDF Then
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & DoubleToString(dVal, 5))
+ Else
+ DdfFileContent.Add(ConstCompo.DDF_SPACE5 & ConstCompo.K_OVERMATERIAL & ": " & Part.BottomOverMaterial)
+ End If
+ End If
+ ' Riordino e stampo le compo
+ SearchCompo(DdfFileContent, Part, bIsDDF)
+ If Not Directory.Exists(Path.GetDirectoryName(sPath)) Then
+ Directory.CreateDirectory(Path.GetDirectoryName(sPath))
+ End If
+ DdfFileContent.Add(" ")
+ DdfFileContent.Add("# End Part")
+ ' se sono arrivato fin qui significa che tutto è andato a buon fine (posso quindisalvare il file corrente)
+ DDFIsCorrect = ParamInCompoIsCorrect
+ '-----------------------------------------------------------------------------------------------------------------------------------
+ 'Stampa su file
+ If bIsForAssembly Then
+ File.AppendAllLines(sPath, DdfFileContent, Text.Encoding.UTF8)
+ Else
+ File.WriteAllLines(sPath, DdfFileContent, Text.Encoding.UTF8)
+ End If
+ End Sub
+
#Region "Funzioni per il posizionamento"
Private Function PositionJamb_Y(CurrPart As Part) As String
Dim y As String
diff --git a/DoorParameters/Compo.vb b/DoorParameters/Compo.vb
index 1fa4fa1..c5ddb41 100644
--- a/DoorParameters/Compo.vb
+++ b/DoorParameters/Compo.vb
@@ -6,24 +6,8 @@ Imports EgtUILib
Public Class Compo
Implements INotifyPropertyChanged
Friend TempFileDDF As String = IniFile.m_sTempDir & "\" & TEMP_FILE
- 'Friend m_rfCurrDoor As Part
- ' definizione della funzione delegato: riceve il valore di modifica della compo e della general
- 'Delegate Function CompareIsModify(rIsModifyCompo As Boolean, rIsModifyDoor As Boolean) As Boolean
-
- '' aggiorno la variabile globale di cambiamento: verifico che sia il template che una combo/text sono state modificate
- 'Function IsModify() As Boolean
- ' If m_IsModifiedTemplateSelItem Then
- ' Return True
- ' End If
- ' For IndexCompoParamList = 0 To Me.CompoParamList.Count - 1
- ' If Me.CompoParamList(IndexCompoParamList).m_IsModifyCompoParam Then
- ' m_rfCurrDoor.m_IsModifyDoor = True
- ' Return True
- ' End If
- ' Next
- ' Return False
- 'End Function
+ 'Public Brand As New ObservableCollection(Of CompoBrandDir)
' creo la stringa che contiene la lista degli errori
Dim ErrorList As String = String.Empty
@@ -68,6 +52,77 @@ Public Class Compo
#Region "Template ComboBox"
+ ' lista dei marchi
+ Private m_BrandListPart As New ObservableCollection(Of String)
+ Public Property BrandListPart As ObservableCollection(Of String)
+ Get
+ Return m_BrandListPart
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_BrandListPart = value
+ End Set
+ End Property
+
+ ' selezione del marchio
+ Private m_SelBrandPart As String
+ Public Property SelBrandPart As String
+ Get
+ Return m_SelBrandPart
+ End Get
+ Set(value As String)
+ ' questa procedura deve essere eseguita SOLO dopo il caricamento della pagina!
+ m_SelBrandPart = value
+ For IndexModelList As Integer = 0 To m_BrandListPart.Count - 1
+ If m_BrandListPart(IndexModelList) = m_SelBrandPart Then
+ m_FileList = CompoType.Brand(IndexModelList).ModelFileList
+ Exit For
+ End If
+ Next
+ NotifyPropertyChanged("FileList")
+ Dim SelItemindex As Integer = 0
+ While Path.HasExtension(m_FileList(SelItemindex)) And SelItemindex < m_FileList.Count - 1
+ SelItemindex += 1
+ End While
+ SelFile = m_FileList(SelItemindex)
+ End Set
+ End Property
+ Public Sub SetSelBrand(sSelBrand As String)
+ m_SelBrandPart = sSelBrand
+ NotifyPropertyChanged("SelBrandPart")
+ End Sub
+
+ ' lista dei file
+ Private m_FileList As New ObservableCollection(Of String)
+ Public Property FileList As ObservableCollection(Of String)
+ Get
+ Return m_FileList
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_FileList = value
+ End Set
+ End Property
+
+ ' selezione del file
+ Private m_SelFile As String
+ Public Property SelFile As String
+ Get
+ Return m_SelFile
+ End Get
+ Set(value As String)
+ m_SelFile = value
+ ' ricostruisco il nome del template da passare alle funzioni
+ Dim ModelDir As String = String.Empty
+ If m_SelBrandPart <> RegexFunction.ModelTemplate(m_CompoType.Path) Then ModelDir = m_SelBrandPart & "\"
+ Dim CurrItem As String = ModelDir & m_SelFile
+ ' passo il nome
+ TemplateSelItem = CurrItem
+ 'Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
+ 'Map.refSceneManagerVM.RefreshBtn()
+ NotifyPropertyChanged("SelFile")
+ End Set
+ End Property
+
+ ' nome grafica (potrebbe essere shape o template)
Private m_TemplateName As String
Public Property TemplateName As String
Get
@@ -78,6 +133,7 @@ Public Class Compo
End Set
End Property
+ ' nome DDF (potrebbe essere shape o template)
Private m_TemplateDDFName As String
Public Property TemplateDDFName As String
Get
@@ -88,17 +144,25 @@ Public Class Compo
End Set
End Property
- Private m_TemplateItemList As New List(Of String)
- Public Property TemplateItemList As List(Of String)
+ ' il messaggio associato al brand
+ Public ReadOnly Property BrandMsg As String
+ Get
+ Return "Brand"
+ End Get
+ End Property
+
+ ' lista dei File Template --> usato nella funzione
+ Private m_TemplateItemList As New ObservableCollection(Of String)
+ Public Property TemplateItemList As ObservableCollection(Of String)
Get
Return m_TemplateItemList
End Get
- Set(value As List(Of String))
+ Set(value As ObservableCollection(Of String))
m_TemplateItemList = value
End Set
End Property
- Friend m_IsModifiedTemplateSelItem As Boolean = False
+ ' Template selezionato
Private m_TemplateSelItem As String
Public Property TemplateSelItem As String
Get
@@ -319,8 +383,6 @@ Public Class Compo
End If
End Sub
- ' a differenza delle funzioni sopra queste ricevono come parametro l'oggetto compo che deve essere modificato
- ' il prossimo passo sarà eliminare le funzioni sopra scritte per lasciare solo queste
#Region "SettemplateREFCOMPO"
Friend Sub SetTemplateSelItemRefCompo(value As String, CurrRefCompo As Compo)
Dim CurrConfig As String = CurrRefCompo.CompoType.Path & "\" & CONFIGINI_FILE_NAME
@@ -489,7 +551,7 @@ Public Class Compo
End If
End Function
- Private Function ReadParam(sReadLine As String, ByRef NewCompoParam As CompoParam, ByRef sErrorList As String) As Boolean
+ Public Function ReadParam(sReadLine As String, ByRef NewCompoParam As CompoParam, ByRef sErrorList As String) As Boolean
' Se linea vuota, esco con errore
If String.IsNullOrWhiteSpace(sReadLine) Then
sErrorList = ConcatErrorString(sErrorList, "Empty Line")
@@ -664,63 +726,392 @@ Public Class Compo
Return False
End Function
- ' converto questo vettore {"TextBox", "NomeDDF/Nome"} in {"TextBox", "NomeDDF", "Nome"}
- Private Sub ConvertTextBoxString(ByRef Items() As String)
- Dim Arrays(Items.Count) As String
- Dim IndexArray As Integer = 0
- Dim IndexItems As Integer = 0
- For IndexItems = 0 To Items.Count - 1
- If Not String.IsNullOrEmpty(RegexFunction.ParamExpression(Items(IndexItems))) Then
- Arrays(IndexArray) = Trim(RegexFunction.ParamExpression(Items(IndexItems)))
- IndexArray += 1
- ElseIf Items(IndexItems).Split("/"c).Count = 1 Then
- Arrays(IndexArray) = Trim(Items(IndexItems))
- IndexArray += 1
- ElseIf Items(IndexItems).Split("/"c).Count = 2 Then
- Arrays(IndexArray) = Trim(Items(IndexItems).Split("/"c)(0))
- IndexArray += 1
- If IndexArray < Arrays.Count - 1 Then
- Arrays(IndexArray) = Trim(Items(IndexItems).Split("/"c)(1))
- IndexArray += 1
+ Public Function ReadParamHardware(sReadLine As String, ByRef NewCompoParam As CompoParam, ByRef sErrorList As String) As Boolean
+ ' Se linea vuota, esco con errore
+ If String.IsNullOrWhiteSpace(sReadLine) Then
+ sErrorList = ConcatErrorString(sErrorList, "Empty Line")
+ Return False
+ End If
+ ' Scompongo la linea nelle sue parti
+ Dim sItems() As String = sReadLine.Split(";"c)
+ ' Devono esserci almeno due parti
+ If sItems.Count() < 2 Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), m_CompoType.DDFName, sItems(0))
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ ' La prima parte definisce la categoria
+ Select Case Trim(sItems(0))
+ Case "ComboBox"
+ ' NomeDDF e Nome del combo "ComboBox; LG/geometry name; MortiseHinge/MortiseHinge, LG/LG"
+ Dim sComboList() As String = sItems(1).Split("/"c)
+ Dim sDDFName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sComboList.Count() >= 1 Then sDDFName = Trim(sComboList(0))
+ If sComboList.Count() >= 2 Then
+ sName = Trim(MsgControl(sComboList(0), sComboList(1), sErrorList))
+ Else
+ sName = sDDFName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sComboList(0), m_CompoType.Path))
End If
- End If
- Next
- If IndexArray = IndexItems + 1 Then
- System.Array.Resize(Items, IndexArray)
- Items = Arrays
- 'Else
- ' Items = Arrays
- End If
- End Sub
-
- ' converto questo vettore {"ComboBox", "NomeDDF/Nome"} in {"ComboBox", "NomeDDF", "Nome"}
- Private Sub ConvertComboBoxString(ByRef Items() As String)
- Dim bCovert As Boolean = False
- Dim Arrays(Items.Count) As String
- Dim IndexArray As Integer = 0
- Dim IndexItems As Integer = 0
- For IndexItems = 0 To Items.Count - 1
- If Items(IndexItems).Split("/"c).Count = 1 Then
- Arrays(IndexArray) = Trim(Items(IndexItems))
- IndexArray += 1
- ElseIf Items(IndexItems).Split("/"c).Count = 2 Then
- Arrays(IndexArray) = Trim(Items(IndexItems).Split("/"c)(0))
- Arrays(IndexArray + 1) = Trim(Items(IndexItems).Split("/"c)(1))
- IndexArray += 2
- For Index = IndexItems + 1 To Items.Count - 1
- Arrays(Index + 1) = Trim(Items(Index))
+ ' La combobox deve contenere almeno un elemento "ComboBox; NomeDDF/Nome; NomeDDFItem/NomeItem, ...."
+ If sItems.Count < 3 Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), sDDFName, m_CompoType.DDFName)
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ ' Ricavo i diversi item
+ Dim sComboItemList() As String = sItems(2).Split(","c)
+ Dim ComboItemList As New List(Of String)
+ Dim DDFComboItemList As New List(Of String)
+ For ItemIndex = 0 To sComboItemList.Count - 1
+ Dim ComboItem() As String = sComboItemList(ItemIndex).Split("/"c)
+ ' se esiste il NomeDDFItem
+ If ComboItem.Count >= 1 Then DDFComboItemList.Add(Trim(ComboItem(0)))
+ ' se esiste anche il NomeItem
+ If ComboItem.Count >= 2 Then
+ ' carico la lista con i nomi
+ ComboItemList.Add(Trim(MsgControl(ComboItem(0), ComboItem(1), sErrorList)))
+ Else
+ ' se esiste solo un nome considero sia il nome DDF
+ ComboItemList.Add(Trim(ComboItem(0)))
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), ComboItem(0), m_CompoType.Path))
+ End If
Next
- bCovert = True
- Exit For
- End If
- Next
- If bCovert Then
- System.Array.Resize(Items, Items.Count)
- Items = Arrays
- 'Else
- ' Items = Arrays
- End If
- End Sub
+ ' Creo il parametro
+ NewCompoParam = New ComboBoxParam(sDDFName, sName, Me, ComboItemList, DDFComboItemList, ComboItemList(0))
+ Return True
+ Case "ComboBoxLua"
+ ' NomeDDF e Nome del combo "ComboBoxLua; LG/geometry name; key1/L"
+ Dim sComboList() As String = sItems(1).Split("/"c)
+ Dim sLuaName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sComboList.Count() >= 1 Then sLuaName = Trim(sComboList(0))
+ If sComboList.Count() >= 2 Then
+ sName = Trim(MsgControl(sComboList(0), sComboList(1), sErrorList))
+ Else
+ sName = sLuaName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sComboList(0), m_CompoType.Path))
+ End If
+ ' La combobox deve contenere almeno un elemento "ComboBoxLua; NomeDDF/Nome; Key/NomePara,etro, ...."
+ Dim sNameGeometry As String = String.Empty
+ If sItems.Count < 3 Then
+ If Not CompoMatch.ReserchInTable(Me.CompoType.DDFName, "", sNameGeometry) Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), sLuaName, m_CompoType.DDFName)
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ End If
+ ' prima chiave di ricerca trovata
+ If sItems.Count = 3 Then
+ Dim sKey1() As String = sItems(2).Split("/"c)
+ Dim sKeyParamLua As String = String.Empty
+ Dim sKey1Param As String = String.Empty
+ If sKey1.Count() >= 1 Then sKey1Param = Trim(sKey1(0))
+ If sKey1.Count() >= 2 Then
+ sKeyParamLua = Trim(sKey1(1))
+ Else
+ sKeyParamLua = Trim(sKey1(0))
+ End If
+ If Not CompoMatch.ReserchInTable(Me.CompoType.DDFName, sKeyParamLua, sNameGeometry) Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), sLuaName, m_CompoType.DDFName)
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ End If
+ ' Ricavo i diversi item
+ If String.IsNullOrEmpty(sNameGeometry) Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), sLuaName, m_CompoType.DDFName)
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ Dim sComboItemList() As String = sNameGeometry.Split(","c)
+ Dim ComboItemList As New List(Of String)
+ Dim LuaComboItemList As New List(Of String)
+ For ItemIndex = 0 To sComboItemList.Count - 1
+ ComboItemList.Add(Trim(sComboItemList(ItemIndex)))
+ LuaComboItemList.Add(Trim("'" & sComboItemList(ItemIndex) & "'"))
+ Next
+ ' Creo il parametro
+ NewCompoParam = New ComboBoxParam(sLuaName, sName, Me, ComboItemList, LuaComboItemList, ComboItemList(0))
+ Return True
+
+ Case "ComboBoxOnOff"
+ ' NomeDDF e Nome del combo
+ Dim sComboList() As String = sItems(1).Split("/"c)
+ Dim sDDFName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sComboList.Count() >= 1 Then sDDFName = Trim(sComboList(0))
+ If sComboList.Count() >= 2 Then
+ sName = Trim(MsgControl(sComboList(0), sComboList(1), sErrorList))
+ Else
+ sName = sDDFName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sComboList(0), m_CompoType.Path))
+ End If
+ ' La combobox deve contenere almeno un elemento "ComboBox; NomeDDF/Nome; NomeDDFItem/NomeItem, ...."
+ If sItems.Count < 3 Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), sDDFName, m_CompoType.DDFName)
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ ' Ricavo i diversi item
+ Dim sComboItemList() As String = sItems(2).Split(","c)
+ Dim ComboItemList As New List(Of String)
+ Dim DDFComboItemList As New List(Of String)
+ For ItemIndex = 0 To sComboItemList.Count - 1
+ Dim ComboItem() As String = sComboItemList(ItemIndex).Split("/"c)
+ ' se esiste il NomeDDFItem
+ If ComboItem.Count >= 1 Then DDFComboItemList.Add(Trim(ComboItem(0)))
+ ' se esiste anche il NomeItem
+ If ComboItem.Count >= 2 Then
+ ' carico la lista con i nomi
+ ComboItemList.Add(Trim(MsgControl(ComboItem(0), ComboItem(1), sErrorList)))
+ Else
+ ' se esiste solo un nome considero sia il nome DDF
+ ComboItemList.Add(Trim(ComboItem(0)))
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), ComboItem(0), m_CompoType.Path))
+ End If
+ Next
+ ' Creo il parametro
+ NewCompoParam = New ComboBoxOnOffParam(sDDFName, sName, Me, ComboItemList, DDFComboItemList, ComboItemList(0))
+ Return True
+
+ Case "TextBox"
+ ' NomeDDF e Nome del Text
+ Dim sTextList() As String = sItems(1).Split("/"c)
+ Dim sLuaName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sTextList.Count() >= 1 Then sLuaName = Trim(sTextList(0))
+ If sTextList.Count() >= 2 Then
+ sName = Trim(MsgControl(sTextList(0), sTextList(1), sErrorList))
+ Else
+ sName = sLuaName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sTextList(0), m_CompoType.Path))
+ End If
+ ' Se ci sono 2 elementi "TextBox; NomeDDF/Nome"
+ If sItems.Count < 3 Then
+ NewCompoParam = New TextBoxParam(sLuaName, sName, Me, "0.000", Nothing, Nothing)
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste il valore.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50125), sName, m_CompoType.DDFName))
+ Return True
+ End If
+ ' Se ci sono almeno 3 elementi "TextBox; NomeDDF/Nome; inch/4.5000"
+ ' recupero il valore di default
+ Dim dHeight As Double = 500 ' Attenzione ai mm
+ Dim dDefaultValue As Double = 0.0
+
+ Dim sTypeValue As String = String.Empty
+ Dim sValue As String = String.Empty
+ Dim sValueList() As String = sItems(2).Split("/"c)
+
+ If sValueList.Count() >= 1 Then sValue = Trim(sValueList(0))
+ If sValueList.Count() >= 2 Then
+ sTypeValue = Trim(sValueList(1))
+ Else
+ sTypeValue = "mm"
+ End If
+
+ ' a seconda del tipo Eseguo il controllo della variabile
+ Dim sDefaultValue As String = "0.0"
+ Select Case sTypeValue
+ Case "double"
+ If StringToDouble(sValue, dDefaultValue) Then
+ sDefaultValue = DoubleToString(dDefaultValue, 5)
+ Else
+ Return False
+ End If
+ Case "inch"
+ ' ricevo un valore in Inches
+ If OptionModule.m_SelectedMeasureUnit = "mm" Then
+ ' converto il valore caricato in mm
+ If StringToLen(sValue, dDefaultValue) Then
+ ' restituisco il valore convertito in mm in stringa
+ sDefaultValue = DoubleToString(dDefaultValue, 4)
+ Else
+ ' altrimenti esco
+ Return False
+ End If
+ Else
+ ' non deovo convertire il valore caricato perchè è nella stessa unità dell'interfaccia
+ If StringToDouble(sValue, dDefaultValue) Then
+ ' restituisco il valore convertito in mm in stringa
+ sDefaultValue = DoubleToString(dDefaultValue, 4)
+ Else
+ Return False
+ End If
+ End If
+ Case "mm"
+ If Not StringToDouble(sValue, dDefaultValue) Then Return False
+ ' ricevo un numero in mm e lo voglio convertire nell'unità dell'interfaccia
+ sDefaultValue = LenToString(dDefaultValue, 4)
+ Case "string"
+ sDefaultValue = sValue
+ Case Else ' il tipo non è tra quelli indicati sopra
+ ' Errore nell'espressione {0}. {1} non associa nulla.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50147), NewCompoParam.Name, sItems(2)))
+ Return False
+ End Select
+ NewCompoParam = New TextBoxParam(sLuaName, sName, Me, sDefaultValue, Nothing, Nothing, sTypeValue)
+ Return True
+
+ Case "TextBoxOnOff"
+ ' NomeDDF e Nome del Text
+ Dim sTextList() As String = sItems(1).Split("/"c)
+ Dim sDDFName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sTextList.Count() >= 1 Then sDDFName = Trim(sTextList(0))
+ If sTextList.Count() >= 2 Then
+ sName = Trim(MsgControl(sTextList(0), sTextList(1), sErrorList))
+ Else
+ sName = sDDFName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sTextList(0), m_CompoType.Path))
+ End If
+ ' Se ci sono 2 elementi "TextBox; NomeDDF/Nome"
+ If sItems.Count < 3 Then
+ NewCompoParam = New TextBoxOnOffParam(sDDFName, sName, Me, "0.000", Nothing, Nothing)
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste il valore.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50125), sName, m_CompoType.DDFName))
+ Return True
+ End If
+ ' recupero il valore di default
+ Dim dHeight As Double = 500 ' Attenzione ai mm
+ Dim dDefaultValue As Double
+ If StringToDouble(sItems(2), dDefaultValue) AndAlso dDefaultValue < dHeight Then
+ Dim sDefaultValue As String = DoubleToString(dDefaultValue, 5)
+ NewCompoParam = New TextBoxOnOffParam(sDDFName, sName, Me, sDefaultValue, Nothing, Nothing)
+ Return True
+ Else
+ NewCompoParam = New TextBoxOnOffParam(sDDFName, sName, Me, "0.000", Nothing, Nothing)
+ ' Errore nell'espressione {0}. {1} non associa nulla.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50147), NewCompoParam.Name, sItems(2)))
+ Return True
+ End If
+
+ Case "TextBoxDGC"
+ ' NomeDDF e Nome del Text
+ Dim sTextList() As String = sItems(1).Split("/"c)
+ Dim sLuaName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sTextList.Count() >= 1 Then sLuaName = Trim(sTextList(0))
+ If sTextList.Count() >= 2 Then
+ sName = Trim(MsgControl(sTextList(0), sTextList(1), sErrorList))
+ Else
+ sName = sLuaName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sTextList(0), m_CompoType.Path))
+ End If
+ ' Se ci sono 2 elementi "TextBox; NomeDDF/Nome"
+ If sItems.Count < 3 Then
+ NewCompoParam = New TextBoxOnOffParam(sLuaName, sName, Me, "0.000", Nothing, Nothing)
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste il valore.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50125), sName, m_CompoType.DDFName))
+ Return True
+ End If
+ ' recupero il valore di default
+ Dim dHeight As Double = 500 ' Attenzione ai mm
+ Dim dDefaultValue As Double = 0.0
+
+ Dim sTypeValue As String = String.Empty
+ Dim sValue As String = String.Empty
+ Dim sValueList() As String = sItems(2).Split("/"c)
+
+ If sValueList.Count() >= 1 Then sValue = Trim(sValueList(0))
+ If sValueList.Count() >= 2 Then
+ sTypeValue = Trim(sValueList(1))
+ Else
+ sTypeValue = "mm"
+ End If
+
+ ' il tipo di parametro che posso accettare è mm o inch
+ Dim sDefaultValue As String = "0.0"
+ Select Case sTypeValue
+ Case "inch"
+ ' ricevo un valore in Inches
+ If OptionModule.m_SelectedMeasureUnit = "mm" Then
+ ' converto il valore caricato in mm
+ If StringToLen(sValue, dDefaultValue) Then
+ ' restituisco il valore convertito in mm in stringa per interfaccia
+ sDefaultValue = DoubleToString(dDefaultValue, 4)
+ Else
+ ' altrimenti esco
+ Return False
+ End If
+ Else
+ ' non deovo convertire il valore caricato perchè è nella stessa unità dell'interfaccia
+ If StringToDouble(sValue, dDefaultValue) Then
+ ' restituisco il valore convertito in mm in stringa per interfaccia
+ sDefaultValue = DoubleToString(dDefaultValue, 4)
+ Else
+ Return False
+ End If
+ End If
+ Case "mm"
+ If Not StringToDouble(sValue, dDefaultValue) Then Return False
+ ' ricevo un numero in mm e lo voglio convertire nell'unità dell'interfaccia
+ sDefaultValue = LenToString(dDefaultValue, 4)
+ End Select
+
+ If sItems.Count < 4 Then
+ ' significa che si comporta come fosse una semplice TextBox
+ NewCompoParam = New TextBoxParam(sLuaName, sName, Me, sDefaultValue, Nothing, Nothing, sTypeValue)
+ Return True
+ End If
+
+ Dim sConst() As String = sItems(3).Split(","c)
+ Dim sListConst As New List(Of String)
+ sListConst.Add("0") ' il primo parametro della lista deve essere sempre quello nullo
+ For Index As Integer = 0 To sConst.Count - 1
+ If Trim(sConst(Index)) = "0" Then Continue For
+ sListConst.Add(Trim(sConst(Index)))
+ Next
+ NewCompoParam = New TextBoxDGCParam(sLuaName, sName, Me, sDefaultValue, Nothing, Nothing, sListConst, sTypeValue)
+ Return True
+
+ Case "CheckBox"
+ ' NomeDDF e Nome del Text
+ Dim sTextList() As String = sItems(1).Split("/"c)
+ Dim sLuaName As String = String.Empty
+ Dim sName As String = String.Empty
+ If sTextList.Count() >= 1 Then sLuaName = Trim(sTextList(0))
+ If sTextList.Count() >= 2 Then
+ sName = Trim(MsgControl(sTextList(0), sTextList(1), sErrorList))
+ Else
+ sName = sLuaName
+ ' Errore nella lettura del nome {0} in {1}. Attesa una corrispondenza numerica.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50120), sTextList(0), m_CompoType.Path))
+ End If
+ If sItems.Count < 3 Then
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste.
+ Dim sError As String = String.Format(EgtMsg(50121), sLuaName, m_CompoType.DDFName)
+ sErrorList = ConcatErrorString(sErrorList, sError)
+ Return False
+ End If
+ Dim nInd As Integer
+ Dim bCheck As Boolean = False
+ If Integer.TryParse(sItems(2), nInd) Then
+ If nInd = 1 Then bCheck = True Else bCheck = False
+ Else
+ ' Errore nella lettura {0} nel parametro {1} della componente: non esiste il valore.
+ sErrorList = ConcatErrorString(sErrorList, String.Format(EgtMsg(50125), sName, m_CompoType.DDFName))
+ End If
+ NewCompoParam = New CheckBoxParam(sLuaName, sName, Me, bCheck)
+ Return True
+ End Select
+ Return False
+ End Function
Private m_TemplateVisibility As Visibility
Public Property TemplateVisibility As Visibility
@@ -747,9 +1138,8 @@ Public Class Compo
' Definizione comando
Private m_CmdDelete As ICommand
- Sub New(CompoType As CompoType, MyDoor As Part)
+ Sub New(CompoType As CompoType)
m_CompoType = CompoType
- m_rfCurrDoor = MyDoor
End Sub
#Region "COMMANDS"
@@ -791,8 +1181,7 @@ Public Class Compo
End Class
Public Class CompoParam
- Friend Shared m_rfSetTitle As Action
-
+
Private m_Name As String
Public Property Name As String
Get
@@ -834,6 +1223,18 @@ Public Class TextBoxParam
Inherits CompoParam
Implements INotifyPropertyChanged
+ ' utilizzato negli Hardware
+ Private m_TypeVar As String
+ Public Property TypeVar As String
+ Get
+ Return m_TypeVar
+ End Get
+ Set(value As String)
+ m_TypeVar = value
+ End Set
+ End Property
+
+
Private m_IsReadOnly As Boolean = True
Public Property IsReadOnly As Boolean
Get
@@ -865,6 +1266,7 @@ Public Class TextBoxParam
Public Sub SetValue(sValue As String)
m_Value = sValue
NotifyPropertyChanged("ToolTipValue")
+ NotifyPropertyChanged("Value")
End Sub
Public ReadOnly Property ToolTipValue As String
@@ -930,6 +1332,15 @@ Public Class TextBoxParam
m_ComboValuelList = ComboValuelList
End Sub
+ ' utilizzata per le text degli hardware che possono ricevere diversi tipi di valore
+ Sub New(sDDFName As String, sName As String, CurrCompo As Compo, sValue As String, ComboBox As ComboBoxParam, ComboValuelList As List(Of String), TypeVar As String)
+ MyBase.New(sDDFName, sName, CurrCompo)
+ m_Value = sValue
+ m_ComboBox = ComboBox
+ m_ComboValuelList = ComboValuelList
+ m_TypeVar = TypeVar
+ End Sub
+
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
@@ -939,6 +1350,7 @@ End Class
Public Class ComboBoxParam
Inherits CompoParam
+ Implements INotifyPropertyChanged
Private m_IsReadOnly As Boolean = True
Public Property IsReadOnly As Boolean
@@ -979,20 +1391,20 @@ Public Class ComboBoxParam
m_SelItem = value
' controllo che la chiamata avvenga da una componente sulla porta?
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
- Dim CmpPar As CompoParam = Me
- Dim IndexP As Integer = CurrCompo.CompoParamList.IndexOf(Me)
- ' se il nome della combobox è side allora ed esiset un riferimento
- If CmpPar.DDFName.ToLower = "side" And Not IsNothing(CurrCompo.refJambCompo) Then
- ' riposiziono la componente dopo averla eliminata dal jamb su cui si trova
- Map.refPartPageVM.CurrPart.RemoveRefCompo(CurrCompo.refJambCompo)
- CurrCompo.SetTemplateSelItem(CurrCompo.TemplateSelItem)
- End If
+ Dim CmpPar As CompoParam = Me
+ Dim IndexP As Integer = CurrCompo.CompoParamList.IndexOf(Me)
+ ' se il nome della combobox è side allora ed esiset un riferimento
+ If CmpPar.DDFName.ToLower = "side" And Not IsNothing(CurrCompo.refJambCompo) Then
+ ' riposiziono la componente dopo averla eliminata dal jamb su cui si trova
+ Map.refPartPageVM.CurrPart.RemoveRefCompo(CurrCompo.refJambCompo)
+ CurrCompo.SetTemplateSelItem(CurrCompo.TemplateSelItem)
+ End If
Map.refSceneManagerVM.RefreshBtn()
End Set
End Property
-
Friend Sub SetSelItem(value As String)
m_SelItem = value
+ NotifyPropertyChanged("SelItem")
End Sub
Sub New(sDDFName As String, sName As String, CurrCompo As Compo, ItemList As List(Of String), ItemListDDF As List(Of String), sSelItem As String)
@@ -1002,6 +1414,10 @@ Public Class ComboBoxParam
m_SelItem = sSelItem
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
Public Class TextBoxOnOffParam
@@ -1028,6 +1444,74 @@ Public Class TextBoxOnOffParam
End Sub
End Class
+Public Class TextBoxDGCParam
+ Inherits TextBoxParam
+
+ Private m_ConstList As List(Of String)
+ Public Property ConstList As List(Of String)
+ Get
+ Return m_ConstList
+ End Get
+ Set(value As List(Of String))
+ m_ConstList = value
+ End Set
+ End Property
+
+ Private m_SelConst As String
+ Public Property SelConst As String
+ Get
+ Return m_SelConst
+ End Get
+ Set(value As String)
+ m_SelConst = value
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
+ End Set
+ End Property
+ Public Sub SetConst(SelConst As String)
+ m_SelConst = SelConst
+ NotifyPropertyChanged("SelConst")
+ End Sub
+
+ Sub New(sDDFName As String, sName As String, CurrCompo As Compo, sValue As String, ComboBox As ComboBoxParam, ComboValuelList As List(Of String), ConstList As List(Of String), TypeVar As String)
+ MyBase.New(sDDFName, sName, CurrCompo, sValue, ComboBox, ComboValuelList, TypeVar)
+ m_ConstList = ConstList
+ m_SelConst = m_ConstList(0)
+ End Sub
+
+End Class
+
+Public Class CheckBoxParam
+ Inherits CompoParam
+ Implements INotifyPropertyChanged
+
+ Private m_IsChecked As Boolean = False
+ Public Property IsChecked As Boolean
+ Get
+ Return m_IsChecked
+ End Get
+ Set(value As Boolean)
+ m_IsChecked = value
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
+ End Set
+ End Property
+ Public Sub SetIsChecked(IsChecked As Boolean)
+ m_IsChecked = IsChecked
+ NotifyPropertyChanged("IsChecked")
+ End Sub
+
+
+ Sub New(sDDFName As String, sName As String, CurrCompo As Compo, IsChecked As Boolean)
+ MyBase.New(sDDFName, sName, CurrCompo)
+ m_IsChecked = IsChecked
+ 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
+
Public Class ComboBoxOnOffParam
Inherits ComboBoxParam
@@ -1050,4 +1534,4 @@ Public Class ComboBoxOnOffParam
Sub New(sDDFName As String, sName As String, CurrCompo As Compo, ItemList As List(Of String), ItemListDDF As List(Of String), sSelItem As String)
MyBase.New(sDDFName, sName, CurrCompo, ItemList, ItemListDDF, sSelItem)
End Sub
-End Class
\ No newline at end of file
+End Class
diff --git a/DoorParameters/Part.vb b/DoorParameters/Part.vb
index efc5f80..6e16f8d 100644
--- a/DoorParameters/Part.vb
+++ b/DoorParameters/Part.vb
@@ -40,7 +40,7 @@ Public Class Part
m_IsActive = bIsActive
NotifyPropertyChanged("IsActive")
End Sub
-
+
' lista delle disposizioni da mostrare a video
Friend Shared m_DispositionList As New ObservableCollection(Of EdgeType)
Public ReadOnly Property DispositionList As ObservableCollection(Of EdgeType)
@@ -318,7 +318,7 @@ Public Class Part
Map.refAssemblyPageVM.CurrAssembly.SetVarAssembly()
'SetVarSize()
UpdateToolTip()
- Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
End Set
End Property
Public Sub SetThickness(sThickness As String)
@@ -334,7 +334,7 @@ Public Class Part
End If
Return m_Weight
End Get
- Set(value As String)
+ Set(value As String)
m_Weight = value
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
NotifyPropertyChanged("ToolTipEvaluatedWeight")
@@ -719,6 +719,51 @@ Public Class Part
End Set
End Property
+ ' utilizzata nell'Hardware
+ Friend Function AddNewHardware(HardwareGeneral As CompoType, TempHardwFile As String) As Boolean
+ ' disabilito la costruzione del riferimento
+ Assembly.BuiltReffCompo = False
+ ' creo la stringa che contiene la lista degli errori
+ Dim ErrorList As String = String.Empty
+ ' creo il nuovo compo
+ Dim NewCompo As New Compo(HardwareGeneral)
+ ' Leggo il file ini del componente per vedere se c'è il template: se c'è
+ If EgtUILib.GetPrivateProfileInt(S_TEMPLATE, K_ISACTIVE, 1, HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME) <> 0 Then
+ ' leggo nomi
+ Dim Name As String = String.Empty
+ Dim DDFName As String = String.Empty
+ IniFile.GetPrivateProfileCompoName(S_TEMPLATE, K_NAME, DDFName, Name, HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME)
+ 'Dim TemplateList As New ObservableCollection(Of String)
+ 'GetDirectoryCompoFiles(HardwareGeneral.Path, TemplateList)
+ ' aggiungo il template come parametro
+ NewCompo.TemplateDDFName = DDFName
+ NewCompo.TemplateName = Name
+ 'NewCompo.TemplateItemList = TemplateList
+ NewCompo.SetTemplateSelItem(TempHardwFile)
+ ' se non c'è il template
+ Else
+ ' nascondo il template
+ NewCompo.TemplateVisibility = Visibility.Collapsed
+ ' leggo il nome del compo dal file config.ini
+ Dim sTemplateName As String = String.Empty
+ EgtUILib.GetPrivateProfileString(S_TEMPLATE, K_COMPO, "", sTemplateName, HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME)
+ If String.IsNullOrWhiteSpace(sTemplateName) Then
+ ErrorList &= String.Format(EgtMsg(50122), K_COMPO, NewCompo.TemplateName)
+ NewCompo = Nothing
+ ElseIf Not File.Exists(HardwareGeneral.Path & "\" & sTemplateName & ".lua") Then
+ ErrorList &= String.Format(EgtMsg(50122), K_COMPO, NewCompo.TemplateName)
+ NewCompo = Nothing
+ Else
+ NewCompo.TemplateSelItem = sTemplateName
+ End If
+ End If
+ If Not IsNothing(NewCompo) Then
+ CompoList.Add(NewCompo)
+ Return True
+ End If
+ Return False
+ End Function
+
'Gestione ComboBox e TextBox di ogni compo della pulsantiera letta da Compo.ini
Friend Function AddNewCompo(CurrCompoType As CompoType) As Compo
' disabilito la costruzione del riferimento
@@ -726,33 +771,19 @@ Public Class Part
' creo la stringa che contiene la lista degli errori
Dim ErrorList As String = String.Empty
' creo il nuovo compo
- Dim NewCompo As New Compo(CurrCompoType, Me)
+ Dim NewCompo As New Compo(CurrCompoType)
' Leggo il file ini del componente per vedere se c'è il template: se c'è
If EgtUILib.GetPrivateProfileInt(S_TEMPLATE, K_ISACTIVE, 1, CurrCompoType.Path & "\" & CONFIGINI_FILE_NAME) <> 0 Then
' leggo nomi
Dim Name As String = String.Empty
Dim DDFName As String = String.Empty
IniFile.GetPrivateProfileCompoName(S_TEMPLATE, K_NAME, DDFName, Name, CurrCompoType.Path & "\" & CONFIGINI_FILE_NAME)
- Dim TemplateList As New List(Of String)
- GetDirectoryCompoFiles(CurrCompoType.Path, TemplateList)
- ' aggiungo il template come parametro
+
+ '-----------------------------------------------------------------------------------------------------------------------------------
NewCompo.TemplateDDFName = DDFName
NewCompo.TemplateName = Name
- NewCompo.TemplateItemList = TemplateList
- If Not SetItemTemplate(NewCompo.CompoType.DDFName) = String.Empty Then
- NewCompo.SetTemplateSelItem(SetItemTemplate(NewCompo.CompoType.DDFName))
- Else
- ' se esiste un lista di template
- If NewCompo.TemplateItemList.Count > 0 Then
- Dim SelItemindex As Integer = 0
- ' cerco il primo elemento della lista che abbia estensione lua
- While Path.HasExtension(NewCompo.TemplateItemList(SelItemindex)) And SelItemindex < NewCompo.TemplateItemList.Count - 1
- SelItemindex += 1
- End While
- ' inizializzo la combobox template
- NewCompo.SetTemplateSelItem(NewCompo.TemplateItemList(SelItemindex))
- End If
- End If
+ LoadBrandFileList(NewCompo)
+ '-----------------------------------------------------------------------------------------------------------------------------------
' se non c'è il template
Else
' nascondo il template
@@ -773,7 +804,7 @@ Public Class Part
' raggruppo tutte le componenti che hanno lo stesso nome vicine
If Not IsNothing(NewCompo) Then
'-----------------------------------------------------------------------------------------------------------------------------------------------
- ' questa parte viene ignorata se l'oggetto chiamante è un Frame o una Porta Inattiva
+ ' questa parte viene ignorata se l'oggetto chiamante è un Frame
If Not IsNothing(Me.m_TypePart) AndAlso Not Me.m_TypePart.Contains("F") Then
If Not IsNothing(Map.refAssemblyPageVM.CurrAssembly.LeftJamb) Then
' costruisco un riferimnto in locale dell'assemblato
@@ -921,20 +952,20 @@ Public Class Part
' creo la stringa che contiene la lista degli errori
Dim ErrorList As String = String.Empty
' creo il nuovo compo
- Dim NewCompo As New Compo(CurrCompoType, Me)
+ Dim NewCompo As New Compo(CurrCompoType)
' Leggo il file ini del componente per vedere se c'è il template: se c'è
If EgtUILib.GetPrivateProfileInt(S_TEMPLATE, K_ISACTIVE, 1, CurrCompoType.Path & "\" & CONFIGINI_FILE_NAME) <> 0 Then
' leggo nomi
Dim Name As String = String.Empty
Dim DDFName As String = String.Empty
IniFile.GetPrivateProfileCompoName(S_TEMPLATE, K_NAME, DDFName, Name, CurrCompoType.Path & "\" & CONFIGINI_FILE_NAME)
- Dim TemplateList As New List(Of String)
- GetDirectoryCompoFiles(CurrCompoType.Path, TemplateList)
- ' aggiungo il template come parametro
+
+ '-----------------------------------------------------------------------------------------------------------------------------------
NewCompo.TemplateDDFName = DDFName
NewCompo.TemplateName = Name
- NewCompo.TemplateItemList = TemplateList
- NewCompo.SetTemplateSelItemRefCompo(FrameCompoFile, NewCompo)
+ LoadBrandFileList(NewCompo)
+ '-----------------------------------------------------------------------------------------------------------------------------------
+
Else
' nascondo il template
NewCompo.TemplateVisibility = Visibility.Collapsed
@@ -1032,6 +1063,28 @@ Public Class Part
End If
End Sub
+ Private Function LoadBrandFileList(ByRef NewCompo As Compo) As Boolean
+ Dim CurrCompoType As CompoType = NewCompo.CompoType
+ If CurrCompoType.Brand.Count > 0 Then
+ For IndexModel As Integer = 0 To CurrCompoType.Brand.Count - 1
+ NewCompo.BrandListPart.Add(CurrCompoType.Brand(IndexModel).ModelDirGraphic)
+ Next
+ ' prendo il primo direttorio
+ For IndexFile As Integer = 0 To CurrCompoType.Brand(0).ModelFileList.Count - 1
+ NewCompo.FileList.Add(CurrCompoType.Brand(0).ModelFileList(IndexFile))
+ Next
+ NewCompo.SetSelBrand(NewCompo.BrandListPart(0)) ' Carico il primo modello della lista
+ Dim SelItemindex As Integer = 0
+ While Path.HasExtension(NewCompo.FileList(SelItemindex)) And SelItemindex < NewCompo.FileList.Count - 1
+ SelItemindex += 1
+ End While
+ NewCompo.SelFile = NewCompo.FileList(SelItemindex)
+ Else
+ Return False
+ End If
+ Return True
+ End Function
+
' aggiorna il ToolTip delle TextBox
Private Sub UpdateToolTip()
For CompoIndex = 0 To m_CompoList.Count - 1
@@ -1049,6 +1102,8 @@ Public Class Part
Private FileContent As String()
' Genero una nuova porta da usare nella lettura di un DDF
Shared Sub ReadDDFPartDoor(ArrayFile() As String, ByRef LineIndex As Integer, ByRef ReadDoor As Part)
+ ' passo alla pagina vuota in attesa del caricamneto della prossima
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
' Inizializzazioni
ReadDoor.FileContent = ArrayFile
ReadDoor.m_TypePart = "DO_1"
@@ -1162,8 +1217,15 @@ Public Class Part
End Select
End While
+ If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
+ Else
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage
+ End If
+
' Aggiorno
If Not IsNothing(ReadDoor) Then
+ ' se la porta esiste allora mostro i suoi parametri
Map.refPartPageVM.CurrPart = ReadDoor
'Map.refOptionsVM.RefreshEdgeTypeList()
' Sarebbe buona norma inserire qui la stringa con i messaggi di errore e avvertimento (dopo aver caricato i bevel corretti)
@@ -1761,9 +1823,9 @@ Public Class Part
Private Function GetCompo(Index As Integer, CompoNameDDF As String, ByRef sErrorInfo As String) As Integer
' Controllo esistenza del componente
Dim CompoListIndex As Integer = -1
- For CmpInd = 0 To CompoPanelVM.CompoTypeList.Count() - 1
+ For CmpInd = 0 To Map.refCompoPanelVM.CompoTypeList.Count() - 1
' eseguo il confronto con il nome dei componenti che è stato caricato dal file Default.ini
- If CompoPanelVM.CompoTypeList(CmpInd).DDFName = CompoNameDDF Then
+ If Map.refCompoPanelVM.CompoTypeList(CmpInd).DDFName = CompoNameDDF Then
CompoListIndex = CmpInd
Exit For
End If
@@ -1796,24 +1858,49 @@ Public Class Part
Exit While
End If
' Creo il componente
- Dim m_CurrCompo = New Compo(CompoPanelVM.CompoTypeList(CompoListIndex), Me)
+ Dim m_CurrCompo = New Compo(Map.refCompoPanelVM.CompoTypeList(CompoListIndex))
+ Dim CurrCompoType As CompoType = m_CurrCompo.CompoType
' Se previsto template o shape da configurazione
- Dim CurrCompoTypePath As String = CompoPanelVM.CompoTypeList(CompoListIndex).Path
+ Dim CurrCompoTypePath As String = Map.refCompoPanelVM.CompoTypeList(CompoListIndex).Path
If EgtUILib.GetPrivateProfileInt(S_TEMPLATE, K_ISACTIVE, 1, CurrCompoTypePath & "\" & CONFIGINI_FILE_NAME) <> 0 Then
' leggo se template o shape
Dim Name As String = String.Empty
Dim DDFName As String = String.Empty
IniFile.GetPrivateProfileCompoName(S_TEMPLATE, K_NAME, DDFName, Name, CurrCompoTypePath & "\" & CONFIGINI_FILE_NAME)
+ '-----------------------------------------------------------------------------------------------------------------------------------
m_CurrCompo.TemplateDDFName = DDFName
m_CurrCompo.TemplateName = Name
- ' creo la lista dei possibili template del componente
- Dim TemplateList As New List(Of String)
- GetDirectoryCompoFiles(CurrCompoTypePath, TemplateList)
- m_CurrCompo.TemplateItemList = TemplateList
+ LoadBrandFileList(m_CurrCompo)
+ '-----------------------------------------------------------------------------------------------------------------------------------
' Se c'è "- " iniziale
If sKey.StartsWith("- ") Then
' leggo il template effettivamente utilizzato
Dim sTemplate As String = GetValueWithoutKey(sLine)
+
+ Dim BrandDir As String = String.Empty
+ Dim sFile As String = String.Empty
+ Dim sItems() As String = sTemplate.Split("\"c)
+ If sItems.Count < 2 Then
+ sFile = Trim(sItems(0))
+ m_CurrCompo.SelBrandPart = m_CurrCompo.BrandListPart.Last ' quando aggiorno la marca aggiorno la lista dei file associati
+ For IndexFile As Integer = 0 To m_CurrCompo.FileList.Count - 1
+ If sFile = m_CurrCompo.FileList(IndexFile) Then m_CurrCompo.SelFile = m_CurrCompo.FileList(IndexFile) : Exit For
+ Next
+ End If
+ If sItems.Count >= 2 Then
+ BrandDir = Trim(sItems(0))
+ sFile = Trim(sItems(1))
+ For IndexSplit As Integer = 2 To sItems.Count - 2
+ sFile &= "\" & sItems(IndexSplit)
+ Next
+ For IndexBrand As Integer = 0 To m_CurrCompo.BrandListPart.Count - 1
+ If BrandDir = m_CurrCompo.BrandListPart(IndexBrand) Then m_CurrCompo.SelBrandPart = m_CurrCompo.BrandListPart(IndexBrand) : Exit For
+ Next
+ For IndexFile As Integer = 0 To m_CurrCompo.FileList.Count - 1
+ If sFile = m_CurrCompo.FileList(IndexFile) Then m_CurrCompo.SelFile = m_CurrCompo.FileList(IndexFile) : Exit For
+ Next
+ End If
+
m_CurrCompo.SetTemplateSelItem(sTemplate)
' se il template non compare nella lista
If String.IsNullOrWhiteSpace(m_CurrCompo.TemplateSelItem) Then
@@ -2110,21 +2197,6 @@ Public Class Part
End If
End Sub
- ' per mantenere la configuarbilità con la precedente versione devo riaggiornare le liste dei
- 'Private Sub EdgeTypeCpntrol(ByRef CurrEdgeType As EdgeType)
- ' If CurrEdgeType.Name = "BU" And OptionModule.m_sDisposition = "BD" Then
- ' Try
- ' CurrEdgeType = EdgeTypeList.First(Function(x) x.Name = "BD")
- ' Catch ex As Exception
- ' End Try
- ' ElseIf CurrEdgeType.Name = "BD" And OptionModule.m_sDisposition = "BU" Then
- ' Try
- ' CurrEdgeType = EdgeTypeList.First(Function(x) x.Name = "BU")
- ' Catch ex As Exception
- ' End Try
- ' End If
- 'End Sub
-
#End Region ' Lettura ddf
' Genero una nuova porta da usare nella lettura di un DDF
@@ -2132,6 +2204,31 @@ Public Class Part
'CompoParam.m_rfSetTitle = AddressOf SetTitle
End Sub
+ ' utilizzata per generare la porta dell'Hardware
+ Sub New(Hardware As String)
+ Me.m_Width = OptionModule.m_Width
+ Me.m_Height = OptionModule.m_Height
+ Me.m_Thickness = OptionModule.m_Thickness
+ Me.m_Swing = OptionModule.m_Swing
+ Me.m_IsActive = True
+ Me.m_Measure = ConvertMmUnitsToString(OptionModule.m_bIsMmUnit)
+ Me.m_Weight = OptionModule.m_Weight
+ Me.SetLockEdgeType(New EdgeType("SQ", Visibility.Visible))
+ Me.SetHingeEdgeType(New EdgeType("SQ", Visibility.Visible))
+ Me.SetTopType(New EdgeType("SQ", Visibility.Visible))
+ Me.SetBottomType(New EdgeType("SQ", Visibility.Visible))
+ Me.m_LockEdgeMachining = OptionModule.m_LockEdgeMachining
+ Me.m_HingeEdgeMachining = OptionModule.m_HingeEdgeMachining
+ Me.m_TopMachining = OptionModule.m_TopMachining
+ Me.m_BottomMachining = OptionModule.m_BottomMachining
+ Me.m_LockEdgeOverMaterial = OptionModule.m_LockEdgeOverMaterial
+ Me.m_HingeEdgeOverMaterial = OptionModule.m_HingeEdgeOverMaterial
+ Me.m_TopOverMaterial = OptionModule.m_TopOverMaterial
+ Me.m_BottomOverMaterial = OptionModule.m_BottomOverMaterial
+ Me.SetDispositionItem(OptionModule.m_Disposition)
+ Me.TypePart = "DO_1"
+ End Sub
+
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
diff --git a/DoorParameters/PartPageV.xaml b/DoorParameters/PartPageV.xaml
index 1b17363..70d95c5 100644
--- a/DoorParameters/PartPageV.xaml
+++ b/DoorParameters/PartPageV.xaml
@@ -5,7 +5,7 @@
xmlns:EgtDOORCreator="clr-namespace:EgtDOORCreator">
-
+
@@ -260,16 +260,26 @@
-
+
-
-
-
+
+
+
+
+
+
@@ -369,6 +379,7 @@
-
+
+
diff --git a/DoorParameters/PartPageVM.vb b/DoorParameters/PartPageVM.vb
index bb5fc66..e7694ca 100644
--- a/DoorParameters/PartPageVM.vb
+++ b/DoorParameters/PartPageVM.vb
@@ -43,8 +43,18 @@ Public Class PartPageVM
End Get
End Property
+ Private m_CompoPanelPart As CompoPanelV
+ Public ReadOnly Property CompoPanelControl As ContentControl
+ Get
+ Return m_CompoPanelPart
+ End Get
+ End Property
+
Sub New()
Map.SetRefDoorParametersVM(Me)
+ If IsNothing(Map.refCompoPanelVM) Then Map.SetRefCompoPanelVM(New CompoPanelVM("PartPage"))
+ If IsNothing(m_CompoPanelPart) Then m_CompoPanelPart = New CompoPanelV
+ m_CompoPanelPart.DataContext = Map.refCompoPanelVM
End Sub
#Region "Messages"
diff --git a/Doors.vb b/Doors.vb
index f79e41a..845b7c7 100644
--- a/Doors.vb
+++ b/Doors.vb
@@ -29,7 +29,26 @@ Public Module Doors
Map.refSceneManagerVM.ComposeAssembly(SceneManagerVM.nComposeAssembly)
End If
' Aggiorno la visualizzazione
- If bDraw Then EgtZoom(ZM.ALL)
+ If bDraw Then EgtDraw()
+ ' Cursore standard
+ scene.Cursor = System.Windows.Forms.Cursors.Default
+ Return bOk
+ End Function
+
+ Function ExecDoorsPrinter(ByRef scene As Scene, sFilePath As String, Optional bDraw As Boolean = True) As Boolean
+ ' Cursore attesa
+ scene.Cursor = System.Windows.Forms.Cursors.WaitCursor
+ ' Scrivo il nome del file aperto in una variabile globale per averlo in caso di errore
+ IniFile.m_DDFFilePath = sFilePath
+ ' Creazione porta
+ Dim bOk As Boolean = CreateDoors(sFilePath, False, False)
+ '' se attiva modalità assemblato, calcolo posizioni dei Part
+ 'If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ ' Map.refSceneManagerVM.ComposeAssembly(SceneManagerVM.nComposeAssembly)
+ 'End If
+ ' Aggiorno la visualizzazione
+ If bDraw Then EgtDraw()
+ EgtZoom(ZM.ALL)
' Cursore standard
scene.Cursor = System.Windows.Forms.Cursors.Default
Return bOk
diff --git a/EgtDOORCreator.vbproj b/EgtDOORCreator.vbproj
index 467e740..e6b9e94 100644
--- a/EgtDOORCreator.vbproj
+++ b/EgtDOORCreator.vbproj
@@ -87,6 +87,7 @@
..\..\EgtProg\EgtDOORCreator\Ionic.Zip.dll
+
@@ -113,6 +114,9 @@
+
+ CompoPanelHardwareV.xaml
+
@@ -121,6 +125,7 @@
+
@@ -144,12 +149,24 @@
AssemblyPageV.xaml
+
+
+
+ HardwarePageV.xaml
+ LauncherV.xaml
+
+ PrintSceneHostV.xaml
+
+
+ NewHardwareV.xaml
+
+ OptionsV.xaml
@@ -159,7 +176,15 @@
OrderV.xaml
+
+ PrintWndV.xaml
+
+
+
+ ProjectManagerHardwareV.xaml
+
+ ProjectManagerV.xaml
@@ -202,6 +227,10 @@
DesignerMSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+ DesignerMSBuild:Compile
@@ -218,6 +247,10 @@
DesignerMSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+ DesignerMSBuild:Compile
@@ -243,6 +276,14 @@
DesignerMSBuild:Compile
+
+ MSBuild:Compile
+ Designer
+
+
+ Designer
+ MSBuild:Compile
+ MSBuild:CompileDesigner
@@ -251,6 +292,14 @@
DesignerMSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+ MSBuild:CompileDesigner
@@ -447,9 +496,6 @@
-
-
- IF "$(PlatformName)"=="x86" IF "$(ConfigurationName)" == "Release" copy $(TargetPath) c:\EgtProg\EgtDOORCreator\EgtDOORCreatorR32.exe
diff --git a/EgtDOORCreatorDictionary.xaml b/EgtDOORCreatorDictionary.xaml
index 3c6fdfd..e18b2c1 100644
--- a/EgtDOORCreatorDictionary.xaml
+++ b/EgtDOORCreatorDictionary.xaml
@@ -6,13 +6,14 @@
+
-
+
-
+
diff --git a/Guide/GuideV.xaml.vb b/Guide/GuideV.xaml.vb
index c464b0d..bd5a9bc 100644
--- a/Guide/GuideV.xaml.vb
+++ b/Guide/GuideV.xaml.vb
@@ -13,7 +13,8 @@
' Per evitare richieste di approvare esecuzione javascript :
' - impostare possibilità di eseguire script in locale da Windows
' - si cambia il riferimento al disco C: nel modo seguente
-
+ ' Prova della lettura di un file chm (Help)
+ 'System.Windows.Forms.Help.ShowHelp(Nothing, "c:\EgtData\EgtDOORCreator\Help\Prova\HelpNDoc tutorial.chm")
Dim sHelpDir As String = String.Empty
If OptionModule.m_SmartHelp Then sHelpDir = IniFile.m_sHelpDir Else sHelpDir = IniFile.m_sHelpDir.Replace("C:", "file://127.0.0.1/c$")
DoorBrowser.Navigate(New Uri(sHelpDir & "\" & m_Language & "\" & GuideVM.m_AddressGuide & ".html"))
diff --git a/HardwareManager/Hardware.vb b/HardwareManager/Hardware.vb
new file mode 100644
index 0000000..f07cfcd
--- /dev/null
+++ b/HardwareManager/Hardware.vb
@@ -0,0 +1,915 @@
+Imports System.ComponentModel
+Imports System.Collections.ObjectModel
+Imports System.IO
+Imports EgtUILib
+Imports EgtWPFLib5
+
+Public Class Hardware
+ Implements INotifyPropertyChanged
+
+ Dim bTypeListExist As Boolean = False
+ Dim ModelList As New ObservableCollection(Of CompoBrandDir)
+
+ ' i parametetri sono suddivisi in sottocapitolli (gruppi di parametri)
+ Private m_GroupChapters As New ObservableCollection(Of Compo)
+ Public Property GroupChapters As ObservableCollection(Of Compo)
+ Get
+ Return m_GroupChapters
+ End Get
+ Set(value As ObservableCollection(Of Compo))
+ m_GroupChapters = value
+ End Set
+ End Property
+
+#Region "BRAND"
+
+ Private m_BrandList As New ObservableCollection(Of String)
+ Public Property BrandList As ObservableCollection(Of String)
+ Get
+ Return m_BrandList
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_BrandList = value
+ End Set
+ End Property
+
+ Private m_SelBrand As String
+ Public Property SelBrand As String
+ Get
+ Return m_SelBrand
+ End Get
+ Set(value As String)
+ m_SelBrand = value
+ SetModeltemplate()
+ End Set
+ End Property
+
+#End Region ' Brand
+
+#Region "TEMPLATE"
+
+ Private m_HardwareGeneral As CompoType
+ Public Property HardwareGeneral As CompoType
+ Get
+ Return m_HardwareGeneral
+ End Get
+ Set(value As CompoType)
+ m_HardwareGeneral = value
+ End Set
+ End Property
+
+ Private m_TemplateList As New ObservableCollection(Of String)
+ Public Property TemplateList As ObservableCollection(Of String)
+ Get
+ Return m_TemplateList
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_TemplateList = value
+ NotifyPropertyChanged("TemplateList")
+ End Set
+ End Property
+
+ Private m_SelTemplate As String
+ ' questa proprietà non è usata nel momento in cui generiamo un nuovo Hardware
+ Public Property SelTemplate As String
+ Get
+ Return m_SelTemplate
+ End Get
+ Set(value As String)
+ If SaveControl() = SaveResult.nCancel Then Return
+ m_SelTemplate = value
+ If bTypeListExist Then ' False-> errore nel caricamento della lista o non esiste, True-> la lista è stata caricata correttamente
+ SetTypeFromTemplate(m_SelTemplate)
+ NotifyPropertyChanged("VisibilityType")
+ End If
+ ClearGroupChapters() ' Prima di procedere ripulisco la pagina dai vacchi paramatri
+ ReadChapterTemplate() ' Rileggo i parametri del SetTemplate
+ ReadTemplate(m_SelTemplate) ' Carico i dati del template
+ Map.refSceneManagerVM.RefreshBtn() ' Creo un file temporaneo per gestire la grafica
+ NotifyPropertyChanged("SelTemplate")
+ NotifyPropertyChanged("TemplateList")
+ End Set
+ End Property
+
+ Private m_VisibilityTemplate As Visibility = Visibility.Visible
+ Public Property VisibilityTemplate As Visibility
+ Get
+ Return m_VisibilityTemplate
+ End Get
+ Set(value As Visibility)
+ m_VisibilityTemplate = value
+ End Set
+ End Property
+
+ Private m_VisibilityTextTemplate As Visibility = Visibility.Collapsed
+ ' in caso di nuovo Hardware incollo sopra alla combobox la textbox (non Collasso/Nascondo la combobox!)
+ Public Property VisibilityTextTemplate As Visibility
+ Get
+ If Not m_VisibilityTemplate = Visibility.Visible Then Return Visibility.Collapsed
+ Return m_VisibilityTextTemplate
+ End Get
+ Set(value As Visibility)
+ m_VisibilityTextTemplate = value
+ NotifyPropertyChanged("VisibilityTextTemplate")
+ End Set
+ End Property
+
+ Private m_TemplateName As String = String.Empty
+ Public Property TemplateName As String
+ Get
+ Return m_TemplateName
+ End Get
+ Set(value As String)
+ m_TemplateName = value
+ ' al momento del slavatggio il nome del file è quello contenuto in m_SelTemplate
+ m_SelTemplate = m_TemplateName
+ NotifyPropertyChanged("TemplateName")
+ End Set
+ End Property
+
+#End Region ' Name-Template
+
+#Region "TYPELIST"
+
+ Private m_TypeList As New List(Of TypeHardware)
+ Public Property TypeList As List(Of TypeHardware)
+ Get
+ Return m_TypeList
+ End Get
+ Set(value As List(Of TypeHardware))
+ m_TypeList = value
+ NotifyPropertyChanged("TypeList")
+ End Set
+ End Property
+
+ ' per mostrare in grafica la lista
+ Private m_TypeListName As New List(Of String)
+ Public ReadOnly Property TypeListName As List(Of String)
+ Get
+ Return m_TypeListName
+ End Get
+ End Property
+
+ ' se non dovessere esistere un tipo, al momento del salvataggio cerca il file con nome Template ed estensione .Templ
+ Private m_SelType As String = "Template"
+ Public Property SelType As String
+ Get
+ Return m_SelType
+ End Get
+ Set(value As String)
+ m_SelType = value
+ ' se la text è visibile non passo mai dal SelTemplate quindi sposto qui il caricamento dei dati
+ If VisibilityTextTemplate = Visibility.Visible Then
+ ClearGroupChapters()
+ ReadChapterTemplate()
+ End If
+ NotifyPropertyChanged("SelType")
+ End Set
+ End Property
+
+ Private m_VisibilityType As Visibility = Visibility.Collapsed
+ Public Property VisibilityType As Visibility
+ Get
+ Return m_VisibilityType
+ End Get
+ Set(value As Visibility)
+ m_VisibilityType = value
+ NotifyPropertyChanged("VisibilityType")
+ End Set
+ End Property
+
+ ' se non viene modificata il tipo non può essere modificato
+ Private m_IsEnableType As Boolean = False
+ Public Property IsEnableType As Boolean
+ Get
+ If Not VisibilityType = Visibility.Visible Then Return False
+ Return m_IsEnableType
+ End Get
+ Set(value As Boolean)
+ m_IsEnableType = value
+ NotifyPropertyChanged("IsEnableType")
+ End Set
+ End Property
+
+#End Region ' TypeList
+
+#Region "GENERAL FUNCTION"
+
+#Region "Caricamento"
+
+ ' Carica il nome della Componente, La lista dei template, La lista dei tipi
+ Public Sub LoadTemplate(ByRef CurrCompoType As CompoType)
+ Dim ErrorList As String = String.Empty
+ ' carico il general dell'hardware
+ m_HardwareGeneral = CurrCompoType
+ NotifyPropertyChanged("HardwareGeneral")
+ If EgtUILib.GetPrivateProfileInt(S_TEMPLATE, K_ISACTIVE, 1, CurrCompoType.Path & "\" & CONFIGINI_FILE_NAME) <> 0 Then
+ GetDirectoryCompoModel(CurrCompoType.Path, ModelList)
+ If ModelList.Count > 0 Then
+ For IndexModel As Integer = 0 To ModelList.Count - 1
+ BrandList.Add(ModelList(IndexModel).ModelDirGraphic)
+ Next
+ ' prendo il primo direttorio
+ For IndexFile As Integer = 0 To ModelList(0).ModelFileList.Count - 1
+ TemplateList.Add(ModelList(0).ModelFileList(IndexFile))
+ Next
+ bTypeListExist = LoadType() ' carico la lista dei Type
+ m_SelBrand = m_BrandList(0) ' Carico il primo modello della lista
+ NotifyPropertyChanged("SelBrand")
+ Dim SelItemindex As Integer = 0
+ While Path.HasExtension(m_TemplateList(SelItemindex)) And SelItemindex < m_TemplateList.Count - 1
+ SelItemindex += 1
+ End While
+ SelTemplate = m_TemplateList(SelItemindex)
+ End If
+ Else ' se non c'è il template
+ VisibilityTemplate = Visibility.Collapsed
+ NotifyPropertyChanged("VisibilityTemplate")
+ End If
+ End Sub
+
+ Public Sub SetModeltemplate()
+ For IndexModelList As Integer = 0 To m_BrandList.Count - 1
+ If m_BrandList(IndexModelList) = m_SelBrand Then
+ m_TemplateList = ModelList(IndexModelList).ModelFileList
+ Exit For
+ End If
+ Next
+ Dim SelItemindex As Integer = 0
+ While Path.HasExtension(m_TemplateList(SelItemindex)) And SelItemindex < m_TemplateList.Count - 1
+ SelItemindex += 1
+ End While
+ ' se la text non è visbilie allora seleziono il primo della lista
+ If Not m_VisibilityTextTemplate = Visibility.Visible Then SelTemplate = m_TemplateList(SelItemindex)
+ End Sub
+
+ ' carico la lista dei tipi --> devo stampare gli errori
+ Private Function LoadType() As Boolean
+ Dim ErrorMsg As String = String.Empty
+ ' costruisco la Path del template da leggere
+ IniFile.m_StdTemplate = m_HardwareGeneral.Path & "\StdTemplate.ini"
+ If Not File.Exists(IniFile.m_StdTemplate) Then Return False
+ Dim List As New List(Of String) ' lista temporanea "1/Mort"
+ If IniFile.StdTemplateGetPrivateProfileList("Hardware", "Type", List) Then
+ m_VisibilityType = Visibility.Visible ' rendo visibile la lista
+ ' leggo nomi
+ Dim ArrayNameSplit(1) As String
+ For IndexListType As Integer = 0 To List.Count - 1
+ ArrayNameSplit = List(IndexListType).Split("/"c)
+ If IsNumeric(ArrayNameSplit(0)) Then
+ m_TypeList.Add(New TypeHardware(ArrayNameSplit(1), ArrayNameSplit(0)))
+ m_TypeListName.Add(ArrayNameSplit(1))
+ Else
+ ErrorMsg = "In file StdTempate.ini is missing numeric param in [Type]"
+ TypeList.Add(New TypeHardware("Error!", "0"))
+ Return False ' interrompo la lettura
+ End If
+ Next
+ NotifyPropertyChanged("TypeList")
+ NotifyPropertyChanged("TypeListName")
+ Else
+ m_VisibilityType = Visibility.Collapsed
+ Return False ' se la lista è vuota restituisco falso
+ End If
+ Return True
+ End Function
+
+ ' setta il valore del template --> devo stampare gli errori
+ Private Function SetTypeFromTemplate(value As String) As Boolean
+ ' carico di Default il valore 1
+ For IndexListType As Integer = 0 To TypeList.Count - 1
+ If TypeList(IndexListType).NameINI = "1" Then
+ m_SelType = TypeListName(IndexListType)
+ NotifyPropertyChanged("SelType")
+ Exit For
+ End If
+ Next
+ ' inizio la lettura del file lua selezionato
+ Dim CurrConfig As String = m_HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME
+ Dim ModelDir As String = String.Empty
+ If m_SelBrand <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand & "\"
+ Dim CurrItemPath As String = m_HardwareGeneral.Path & "\" & ModelDir & value
+
+ Dim ErrorMsg As String = String.Empty
+ ' se il file ha estensione nge
+ If Path.HasExtension(CurrItemPath) AndAlso Path.GetExtension(CurrItemPath).ToLower = NGE_EXTENSION Then
+ If Not File.Exists(CurrItemPath) Then ErrorMsg = "File does not exist" : Return False ' controllo che esiste il file altrimenti esco
+ ' m_TemplateSelItem = value
+ ' ' creo la stringa che contiene la lista degli errori
+ ' Dim ParamIndex As Integer = 1
+ Dim ConfigDefault As String = String.Empty ' configurazione del template
+ ' Dim NewCompoParam As CompoParam = Nothing
+ EgtUILib.GetPrivateProfileString(S_NGECONFIG, K_DEFAULT, "", ConfigDefault, CurrConfig)
+ For IndexTypeList As Integer = 0 To TypeList.Count - 1
+ If TypeList(IndexTypeList).NameINI = ConfigDefault Then Exit For Else ErrorMsg = "Definition type is not correct: " & ConfigDefault : Return False
+ Next
+ ' ' ricerco la parola chiave Param nella stringa nel file Config.ini
+ ' ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, ConfigDefault)
+ Else
+ ' se il file non ha estensione allora aggiungo l'estensione .lua
+ If Not Path.GetExtension(CurrItemPath).ToLower = LUA_EXTENSION Then
+ CurrItemPath &= LUA_EXTENSION
+ End If
+ ' controllo che esiste il file altrimenti esco
+ If Not File.Exists(CurrItemPath) Then ErrorMsg = "File does not exist" : Return False
+ ' m_TemplateSelItem = value
+ ' carico un vettore con le stringhe del file corrente
+ Dim ReadCurrCompo() As String = File.ReadAllLines(CurrItemPath)
+ Dim EndOfFile As Boolean = False
+ ' leggo il vettore di stringhe del file corrente
+ For LineIndex = 0 To ReadCurrCompo.Count - 1
+ ' copio il valore della riga
+ Dim CurrCompoFileLine As String = ReadCurrCompo(LineIndex)
+ ' cerco il titolo [Graphic parameters]: se lo trovo
+ If RegexFunction.IsGraphicParametersTitle(CurrCompoFileLine) Then
+ ' mi preparo per leggere la prima riga dopo il titolo
+ Dim ParamIndex As Integer = 1
+ ' Dim NewCompoParam As CompoParam = Nothing
+ ' Dim bIsFinished As Boolean = False
+ ' se la lettura del primo parametro "--Default=" restituisce un valore non nullo
+ If Not String.IsNullOrWhiteSpace(ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_DEFAULT)) Then
+ Dim ConfigDefault As String = Trim(ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_DEFAULT))
+ If Not IsNumeric(ConfigDefault) Then
+ ErrorMsg = "In file " & CurrItemPath & " param 'Default' must be numeric."
+ Return False ' valore letto non è numerico
+ Else
+ For IndexListType As Integer = 0 To TypeList.Count - 1
+ If TypeList(IndexListType).NameINI = ConfigDefault Then
+ m_SelType = TypeListName(IndexListType)
+ NotifyPropertyChanged("SelType")
+ Exit For
+ End If
+ Next
+ Exit For
+ End If
+ 'Else
+ ' ' se il primo parametro non è "Dafault" allora mi aspetto di leggere i parametri
+ ' While Not bIsFinished
+ ' ' attualizzo il componente a nulla
+ ' NewCompoParam = Nothing
+ ' ' cerco nella riga successiva al titolo il primo parametro
+ ' If Not String.IsNullOrWhiteSpace(ReadCurrCompo(LineIndex + ParamIndex)) Then
+ ' Dim ReadLine As String
+ ' ' carico i valori della stringa che seguono la chiave "--Param1="
+ ' ReadLine = ParamLine(ReadCurrCompo(LineIndex + ParamIndex), K_PARAM & ParamIndex)
+
+ ' ' se uno dei paraemtri è completamente sbagliato allora restituisce falso e non riempo la NewCompoParam che rimane Nothing
+ ' bIsFinished = Not ReadParam(ReadLine, NewCompoParam, ErrorList)
+ ' Else
+ ' ' altrimenti se la riga è vuota mi sposto alla successiva
+ ' LineIndex += 1
+ ' ' e continuo il ciclo while
+ ' Continue While
+ End If
+ ' ' insrisco la nuova componenenet: se la riga è vuota o la componente non è stata creata allora il componete è Nothing
+ ' InsertCompoParam(NewCompoParam, ParamIndex)
+ ' ' se il parametro è stato creato passa alla riga successiva
+ ' If Not bIsFinished Then ParamIndex += 1
+ ' End While
+ ' NotifyPropertyChanged("TemplateSelItem")
+ End If
+
+ ' ' esiste già una lista
+ ' For DeleteIndex = m_CompoParamList.Count - 1 To ParamIndex - 1 Step -1
+ ' m_CompoParamList.RemoveAt(DeleteIndex)
+ ' Next
+ ' Exit For
+ ' ElseIf LineIndex = ReadCurrCompo.Count - 1 Then
+ ' ' se non trovo il capitoletto nel file leggo i parametri di default del file Config.ini
+
+ ' Dim ParamIndex As Integer = 1
+ ' Dim NewCompoParam As CompoParam = Nothing
+ ' ReadParamConfig(NewCompoParam, ErrorList, ParamIndex, "")
+ ' Exit For
+ ' End If
+ Next
+
+ End If
+ 'If Not String.IsNullOrWhiteSpace(ErrorList) Then EgtOutLog(ErrorList)
+ ''----------------------------------------------------------------------------------------------------------------------------------------------
+ 'If Assembly.BuiltReffCompo Then
+ ' Dim FrameCompoFile As String = String.Empty
+ ' Dim FrameCompoFileConfig As String = String.Empty
+ ' Dim nDoorNbr As Integer = 1
+ ' Int32.TryParse(Map.refAssemblyPageVM.CurrAssembly.DoorNumber, nDoorNbr)
+ ' If CalcCompoMatching(Me.CompoType.Path, nDoorNbr, Me.TemplateSelItem, FrameCompoFile) AndAlso
+ ' Not String.IsNullOrEmpty(FrameCompoFile) Then
+ ' If Not SearchFileConfig(FrameCompoFile, FrameCompoFileConfig) Then
+ ' MessageBox.Show("Jamb compo does not exist", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning)
+ ' If Not IsNothing(Me.refJambCompo) Then
+ ' Map.refPartPageVM.CurrPart.RemoveRefCompo(Me.refJambCompo)
+ ' Me.refJambCompo = Nothing
+ ' Return
+ ' End If
+ ' Else
+ ' Dim FrameCompoNameDDF As String = String.Empty
+ ' Dim FrameCompoName As String = String.Empty
+ ' Dim Side As String = String.Empty
+ ' Dim CurrCompoPath As String = FrameCompoFileConfig
+ ' ' sostituisco il vecchio CompoType con quello corretto
+ ' If File.Exists(CurrCompoPath) Then
+ ' GetPrivateProfileCompoName(ConstCompo.S_COMPO, ConstCompo.K_NAME, FrameCompoNameDDF, FrameCompoName, CurrCompoPath)
+ ' GetPrivateProfileJambSide(S_POSITIONSIDE, K_SIDE, Side, Me.CompoType.Path & "\" & CONFIGINI_FILE_NAME)
+ ' If String.IsNullOrEmpty(Side) Then
+ ' ' controllo nell'elenco dei parametri se esiste un parametro di tipo Side
+ ' For IndexParam As Integer = 0 To Me.CompoParamList.Count - 1
+ ' If Me.CompoParamList(IndexParam).DDFName.ToLower = "side" Then
+ ' Side = DirectCast(Me.CompoParamList(IndexParam), ComboBoxParam).SelItem
+ ' Exit For
+ ' End If
+ ' Next
+ ' End If
+ ' '-------------------------------------------------------------------------------------------------------------------------------
+ ' If IsNothing(Me.refJambCompo) Then
+ ' Part.CreateRefCompo(Me.CompoType, Me, Map.refAssemblyPageVM.CurrAssembly, FrameCompoFileConfig, FrameCompoFile, Map.refPartPageVM.CurrPart)
+ ' If CompoMatch.LoadCompoParam(Me, Map.refPartPageVM.CurrPart.TypePart) Then Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(Me)
+ ' For IndexParam As Integer = 0 To Me.refJambCompo.CompoParamList.Count - 1
+ ' If Me.refJambCompo.CompoParamList(IndexParam).DDFName.ToLower = "side" Then
+ ' ' assegno alla componente del frame la stessa posizione definita sull'anta
+ ' DirectCast(Me.refJambCompo.CompoParamList(IndexParam), ComboBoxParam).SetSelItem(Me.CompoType.JambSide)
+ ' Exit For
+ ' End If
+ ' Next
+ ' Return
+ ' End If
+ ' '-------------------------------------------------------------------------------------------------------------------------------
+ ' Me.refJambCompo.CompoType.SetDDFName(FrameCompoNameDDF)
+ ' Me.refJambCompo.CompoType.SetName(FrameCompoName)
+ ' Dim FrameCompoDirectory As String
+ ' FrameCompoDirectory = FrameCompoFileConfig.Remove(FrameCompoFileConfig.LastIndexOf("\"))
+ ' Me.refJambCompo.CompoType.SetPath(FrameCompoDirectory)
+ ' Me.refJambCompo.CompoType.SetJambSide(Side)
+ ' End If
+ ' End If
+ ' ' Carico il nome
+ ' FrameCompoFile = FrameCompoFile.Substring(FrameCompoFileConfig.LastIndexOf("\") + 1)
+ ' Me.refJambCompo.SetTemplateSelItemRefCompo(FrameCompoFile, Me.refJambCompo)
+ ' LoadCompoParam(Me, Map.refPartPageVM.CurrPart.TypePart)
+ ' Map.refAssemblyPageVM.CurrAssembly.UpDateCurrCompoJamb(Me)
+ ' ResetCompoParam()
+ ' Else
+ ' If Not IsNothing(Me.refJambCompo) Then
+ ' Map.refPartPageVM.CurrPart.RemoveRefCompo(Me.refJambCompo)
+ ' Me.refJambCompo = Nothing
+ ' End If
+ ' End If
+ 'End If
+ Return True
+ End Function
+
+ ' ricerca il nome dei capitoli associati e chiama la lettura dei parametri
+ Public Sub ReadChapterTemplate()
+ Dim ErrorList As String = String.Empty
+ Dim sParam As String = String.Empty ' la stringa che contiene tutte le informazioni della componente
+ Dim ParamIndex As Integer = 1
+ Dim ChapterIndex As Integer = 1 ' numero del capitolo
+ Dim IndexChapter As String = "1"
+ For IndexTypeList As Integer = 0 To m_TypeList.Count - 1
+ If m_TypeList(IndexTypeList).Name = SelType Then
+ IndexChapter = m_TypeList(IndexTypeList).NameINI
+ Exit For
+ End If
+ Next
+ Dim S_CHAPTER As String = S_GR_PARAM_HARDWARE & IndexChapter & "." ' il nome del capitolo da leggere "ParametersN."
+ While EgtUILib.GetPrivateProfileString(S_CHAPTER & ChapterIndex, K_PARAM & ParamIndex, "", sParam, IniFile.m_StdTemplate) > 0 ' Verifico che esista il capitolo nuovo "Type-ChapterIndex"
+ Dim Chapter As New Compo(m_HardwareGeneral)
+ Dim Name As String = String.Empty
+ Dim LuaName As String = String.Empty
+ If StdTemplateGetPrivateProfileChapterName(S_CHAPTER & ChapterIndex, "Name", LuaName, Name) Then
+ Chapter.TemplateName = Name
+ End If
+ While EgtUILib.GetPrivateProfileString(S_CHAPTER & ChapterIndex, K_PARAM & ParamIndex, "", sParam, IniFile.m_StdTemplate) > 0 ' Verifico che esista il parametro nuovo "Param-ParamIndex"
+ If Not String.IsNullOrWhiteSpace(sParam) Then
+ Dim NewParam As New CompoParam(m_HardwareGeneral.DDFName, m_HardwareGeneral.Name, Chapter)
+ ' leggo il tipo di parametro, se la lettura va a buon fine la carico
+ If Chapter.ReadParamHardware(sParam, NewParam, ErrorList) Then Chapter.CompoParamList.Add(NewParam)
+ End If
+ ParamIndex += 1
+ End While ' termina lettura del capitolo
+ GroupChapters.Add(Chapter)
+ ParamIndex = 1
+ ChapterIndex += 1
+ End While ' termina lettura della configurazione
+ If Not String.IsNullOrEmpty(ErrorList) Then
+ MessageBox.Show(ErrorList, "Error", MessageBoxButton.OK, MessageBoxImage.Error)
+ End If
+ End Sub
+
+ ' elimina le liste di parametri precedenti ad ogni selezione
+ Public Sub ClearGroupChapters()
+ If Not IsNothing(GroupChapters) Then
+ GroupChapters.Clear()
+ End If
+ NotifyPropertyChanged("GroupChapters")
+ End Sub
+
+ Friend Function ReadTemplate(sFile As String) As Boolean
+ ' inizio la lettura del file lua selezionato
+ Dim FileContent() As String
+ Dim ModelDir As String = String.Empty
+ If m_SelBrand <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand & "\"
+ Dim CurrItemPath As String = m_HardwareGeneral.Path & "\" & ModelDir & sFile
+ If Not Path.HasExtension(CurrItemPath) Then CurrItemPath &= LUA_EXTENSION
+ Dim ErrorMsg As String = String.Empty
+ ' se il file ha estensione o se ha estensione nge: esco
+ If Path.GetExtension(CurrItemPath).ToLower = NGE_EXTENSION Then
+ ErrorMsg = "File has nge extension."
+ Return False
+ End If
+ If Not File.Exists(CurrItemPath) Then ErrorMsg = "File does not exist" : Return False ' controllo che esiste il file altrimenti esco
+ FileContent = File.ReadAllLines(CurrItemPath)
+ ' se il file esiste ma è vuoto
+ If FileContent.Count = 0 Then
+ MessageBox.Show(EgtMsg(50107), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ End If
+ For IndexLine As Integer = 0 To FileContent.Count - 1
+ Dim CurrLine As String = Utility.DeleteLuaComment(FileContent(IndexLine))
+ Dim sLine() As String = CurrLine.Split("="c)
+ If sLine.Count < 2 OrElse sLine.Count > 2 Then Continue For
+ FindParamTemplateInConfigList(Trim(sLine(0)), Trim(sLine(1)))
+ Next
+ Return True
+ End Function
+
+ Private Function FindParamTemplateInConfigList(sParam As String, sValue As String) As Boolean
+ For IndexGroupChapters As Integer = 0 To m_GroupChapters.Count - 1
+ For IndexChapter As Integer = 0 To m_GroupChapters(IndexGroupChapters).CompoParamList.Count - 1
+ If m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter).DDFName = sParam Then
+ ' ho trovato una corrispondenza tra il valore de file ini e quello lua in lettura
+ If TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxDGCParam Then
+ Dim Text As TextBoxDGCParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxDGCParam)
+ Dim sItems() As String = sValue.Split("+"c)
+ Dim sLen As String = Trim(Utility.GetMeasure(sItems(0)))
+ Dim dVal As Double = 0.0
+ Text.SetValue(sLen)
+ Text.SetConst(Text.ConstList(0))
+ If sItems.Count >= 2 Then
+ For IndexConst As Integer = 0 To Text.ConstList.Count - 1
+ If Text.ConstList(IndexConst) = Trim(sItems(1)) Then Text.SetConst(Text.ConstList(IndexConst)) : Exit For
+ Next
+ End If
+ ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxParam Then
+ Dim Text As TextBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxParam)
+ ' controllo il tipo di dato che si aspetta
+ Select Case Text.TypeVar
+ Case "inch"
+ Dim sLen As String = Trim(Utility.GetMeasure(sValue))
+ Text.SetValue(sLen)
+ Case "mm"
+ Dim sLen As String = Trim(Utility.GetMeasure(sValue))
+ Text.SetValue(sLen)
+ Case "double"
+ Dim dVal As Double = 0.0
+ If StringToDouble(sValue, dVal) Then Text.SetValue(sValue) Else Text.SetValue("0.000")
+ Case "string"
+ Text.SetValue(Trim(Utility.DeleteSuperScript(sValue)))
+ End Select
+
+ ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is CheckBoxParam Then
+ Dim Text As CheckBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), CheckBoxParam)
+ Text.SetIsChecked(Utility.ConvertCheckBox(sValue))
+ ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is ComboBoxParam Then
+ Dim Text As ComboBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), ComboBoxParam)
+ Text.SetSelItem(Text.ItemList(0))
+ For IndexCombo As Integer = 0 To Text.ItemListDDF.Count - 1
+ If Trim(Text.ItemListDDF(IndexCombo)) = Trim(Utility.DeleteSuperScript(sValue)) Then Text.SetSelItem(Text.ItemList(IndexCombo))
+ Next
+ End If
+ Return True
+ End If
+ Next
+ Next
+ Return False
+ End Function
+
+#End Region ' Caricamneto
+
+#Region "Salvataggio, Duplica, Aggiorna"
+
+ Public Function Duplicate(sSelBrand As String, sTemplate As String) As Boolean
+ If IsNothing(m_SelTemplate) Then
+ MessageBox.Show("Impossible to duplicate Hardware if there is no Hardware selected!", EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
+ Return False
+ End If
+ If IsNothing(sTemplate) Then
+ MessageBox.Show("Missing name of the new template!", EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
+ Return False
+ End If
+ ' ricostruico il percorso del file da dupicare
+ Dim ModelDir As String = String.Empty
+ If m_SelBrand <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand & "\"
+ Dim OldDirPath As String = m_HardwareGeneral.Path & "\" & ModelDir & m_SelTemplate & LUA_EXTENSION
+ ' ricostruisco il nuovo file da creare
+ ModelDir = String.Empty
+ If sSelBrand <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = sSelBrand & "\"
+ Dim CurrDirPath As String = m_HardwareGeneral.Path & "\" & ModelDir & sTemplate & LUA_EXTENSION
+ Dim IndexModel As Integer
+ Dim TemSelBrand As String = String.Empty
+ ' carico la lista dei file presenti nel direttorio selezionato
+ Dim Temp_TemplateList As New ObservableCollection(Of String)
+ For IndexModel = 0 To ModelList.Count - 1
+ If ModelList(IndexModel).ModelDirGraphic = sSelBrand Then
+ TemSelBrand = ModelList(IndexModel).ModelDirGraphic
+ Temp_TemplateList = ModelList(IndexModel).ModelFileList
+ Exit For
+ End If
+ Next
+ ' controllo se il nome è già presente nel direttorio selezionato
+ Dim bNameExist As Boolean = False
+ Dim IndexHardwList As Integer
+ For IndexHardwList = 0 To m_TemplateList.Count - 1
+ If m_TemplateList(IndexHardwList) = sTemplate Then
+ ' se il nome è nella lista allora esco dal ciclo e rendo falsa la variabile bNameExist
+ bNameExist = True
+ Exit For
+ End If
+ bNameExist = False
+ Next
+ ' se il nome esite già nel direttorio selezionato
+ If bNameExist Then
+ Select Case MessageBox.Show("The file: " & sTemplate & " already exist in directory " & sSelBrand & " . Do you want to overwrite it?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning)
+ ' decido di sovrescrivere il file esistente
+ Case MessageBoxResult.Yes
+ If File.Exists(CurrDirPath) Then
+ Try
+ ' elimino il file
+ File.Delete(CurrDirPath)
+ Catch ex As FileNotFoundException
+ ' non è un problema
+ Catch ex As Exception
+ ' non è un problema
+ End Try
+ End If
+ Case Else
+ ' deicido di non sovrescrivere interrompo
+ Return False
+ End Select
+ End If
+ ' elimino ilnome dalla lista dei file (alla fine il nome verrà aggiunto ancora)
+ For IndexTempList As Integer = 0 To m_TemplateList.Count - 1
+ If m_TemplateList(IndexTempList) = sTemplate Then
+ TemplateList.RemoveAt(IndexTempList)
+ Exit For
+ End If
+ Next
+ ' carico le variabili temporanee e aggiorno la grafica (lista dei file e Brand selezionato)
+ SelBrand = TemSelBrand
+ TemplateList = Temp_TemplateList
+ NotifyPropertyChanged("TemplateList")
+ NotifyPropertyChanged("SelBrand")
+ ' copio il file
+ Try
+ File.Copy(OldDirPath, CurrDirPath, True)
+ Catch ex As System.IO.IOException
+ MessageBox.Show("Error in copying: " & ex.Message)
+ ' interrompo la copia e la creazione del nuovo file
+ File.Delete(CurrDirPath)
+ Return False
+ End Try
+ ' aggiungo il nome alla lista
+ TemplateList.Add(sTemplate)
+ For IndexTempList As Integer = 0 To m_TemplateList.Count - 1
+ ' aggiorno la grafica con il valore selzionato tra i template
+ If m_TemplateList(IndexTempList) = sTemplate Then SelTemplate = m_TemplateList(IndexTempList)
+ Next
+ RefreshTemplateListEgtDOORCreator()
+ Return True
+ End Function
+
+ ' crea il file temporaneao per aggiornare la parte grafica
+ Public Function RefreshTempHardware() As Boolean
+ Dim ErrorMsg As String = String.Empty
+ ' costruisco la Path del template da leggere
+ Dim TemplFile = m_HardwareGeneral.Path & "\" & m_SelType & ".templ "
+ If Not File.Exists(TemplFile) Then Return False
+ Dim FileContent() As String = File.ReadAllLines(TemplFile)
+ ' inizio la lettura riga per riga
+ For IndexLine As Integer = 0 To FileContent.Count - 1
+ Dim CurrLine As String = Utility.DeleteLuaComment(FileContent(IndexLine))
+ Dim sLine() As String = CurrLine.Split("="c)
+ If sLine.Count < 2 OrElse sLine.Count > 2 Then Continue For ' significa che non è un parametro
+ Dim sValue As String = Trim(sLine(1))
+ Dim sTemplValue As String = Trim(sLine(1))
+ If Not ConvertValueForLua(sValue) Then Continue For
+ FileContent(IndexLine) = FileContent(IndexLine).Replace(sTemplValue, sValue)
+ Next
+ ' costruisco il nome del percorso del file corrente
+ Dim sTempFileHardw As String = m_HardwareGeneral.Path & "\" & TEMP_FILE_HARDWARE
+ ' salvo il file
+ File.WriteAllLines(sTempFileHardw, FileContent)
+ ' aggiungo la componente
+ Map.refHardwarePageVM.Door.CompoList.Clear()
+ Map.refHardwarePageVM.Door.AddNewHardware(m_HardwareGeneral, Path.GetFileNameWithoutExtension(TEMP_FILE_HARDWARE))
+ 'Map.refSceneManagerVM.RefreshBtn()
+ Return True
+ End Function
+
+ Public Function Save() As Boolean
+ Dim ErrorMsg As String = String.Empty
+ ' costruisco la Path del template da leggere
+ Dim TemplFile = m_HardwareGeneral.Path & "\" & m_SelType & ".templ "
+ If Not File.Exists(TemplFile) Then Return False
+ Dim FileContent() As String = File.ReadAllLines(TemplFile)
+ ' inizio la lettura riga per riga
+ For IndexLine As Integer = 0 To FileContent.Count - 1
+ Dim CurrLine As String = Utility.DeleteLuaComment(FileContent(IndexLine))
+ Dim sLine() As String = CurrLine.Split("="c)
+ If sLine.Count < 2 OrElse sLine.Count > 2 Then Continue For ' significa che non è un parametro
+ Dim sValue As String = Trim(sLine(1))
+ Dim sTemplValue As String = Trim(sLine(1))
+ If Not ConvertValueForLua(sValue) Then Continue For
+ FileContent(IndexLine) = FileContent(IndexLine).Replace(sTemplValue, sValue)
+ Next
+ ' costruisco il nome del percorso del file corrente
+ Dim CurrConfig As String = m_HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME
+ Dim ModelDir As String = String.Empty
+ If m_SelBrand <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand & "\"
+ Dim CurrItemPath As String = m_HardwareGeneral.Path & "\" & ModelDir & m_SelTemplate & LUA_EXTENSION
+ ' devo controllare che il file con questo nome non esiste (solo nel caso di TextTemplate visibile)
+ If VisibilityTextTemplate = Visibility.Visible Then
+ Dim bNameExist As Boolean = False
+ Dim IndexHardwList As Integer
+ For IndexHardwList = 0 To m_TemplateList.Count - 1
+ If m_TemplateList(IndexHardwList) = m_SelTemplate Then
+ ' se il nome è nella lista allora esco dal ciclo e rendo falsa la variabile bNameExist
+ bNameExist = True
+ Exit For
+ End If
+ bNameExist = False
+ Next
+ ' se il nome esite già nel direttorio selezionato
+ If bNameExist Then
+ Select Case MessageBox.Show("The file: " & m_SelTemplate & " already exist in directory " & m_SelBrand & " . Do you want to overwrite it?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning)
+ ' decido di sovrescrivere il file esistente
+ Case MessageBoxResult.Yes
+ ' salvo il file
+ File.WriteAllLines(CurrItemPath, FileContent)
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
+ Return True
+ Case Else
+ ' deicido di non sovrescrivere interrompo
+ Return False
+ End Select
+ End If
+ End If
+ ' salvo il file
+ File.WriteAllLines(CurrItemPath, FileContent)
+ RefreshTemplateListEgtDOORCreator()
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
+ Return True
+ End Function
+
+ Private Function RefreshTemplateListEgtDOORCreator() As Boolean
+ For IndexHardw As Integer = 0 To Map.refCompoPanelVM.CompoTypeList.Count - 1
+ If m_HardwareGeneral.DDFName = Map.refCompoPanelVM.CompoTypeList(IndexHardw).DDFName Then
+ Map.refCompoPanelVM.CompoTypeList(IndexHardw).LoadListTemplate()
+ Return True
+ Exit For
+ End If
+ Next
+ Return False
+ End Function
+
+ Public Function ConvertValueForLua(ByRef sValue As String) As Boolean
+ Dim NameParam = Utility.FindNameParam(sValue)
+ If String.IsNullOrEmpty(NameParam) Then Return False
+ For IndexGroupChapters As Integer = 0 To m_GroupChapters.Count - 1
+ For IndexChapter As Integer = 0 To m_GroupChapters(IndexGroupChapters).CompoParamList.Count - 1
+ If m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter).DDFName = NameParam Then
+ If TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxDGCParam Then
+ Dim Text As TextBoxDGCParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxDGCParam)
+ sValue = String.Empty
+ Select Case Text.TypeVar
+ Case "inch"
+ If OptionModule.m_SelectedMeasureUnit = "Inches" Then
+ sValue = Text.TypeVar & "( " & Text.Value & ")"
+ Else
+ sValue = Text.Value
+ If MmToInches(sValue) Then sValue = Text.TypeVar & "( " & sValue & ")"
+ End If
+ Case "mm"
+ If OptionModule.m_SelectedMeasureUnit = "Inches" Then
+ sValue = Text.Value
+ InchesToMm(sValue)
+ Else
+ sValue = Text.Value
+ End If
+ End Select
+ sValue &= " + " & Text.SelConst
+ Return True
+ ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxParam Then
+ Dim Text As TextBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxParam)
+ sValue = String.Empty
+ ' controllo il tipo di dato che si aspetta
+ Select Case Text.TypeVar
+ Case "inch"
+ If OptionModule.m_SelectedMeasureUnit = "Inches" Then
+ sValue = Text.TypeVar & "( " & Text.Value & ")"
+ Else
+ sValue = Text.Value
+ If MmToInches(sValue) Then sValue = Text.TypeVar & "( " & sValue & ")"
+ End If
+ Case "mm"
+ If OptionModule.m_SelectedMeasureUnit = "Inches" Then
+ sValue = Text.Value
+ InchesToMm(sValue)
+ Else
+ sValue = Text.Value
+ End If
+ Case "double"
+ sValue = Text.Value
+ Case "string"
+ sValue = "'" & Text.Value & "'"
+ End Select
+ Return True
+ ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is CheckBoxParam Then
+ Dim Text As CheckBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), CheckBoxParam)
+ sValue = String.Empty
+ If Text.IsChecked = True Then sValue = " true" Else sValue = " false"
+ Return True
+ ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is ComboBoxParam Then
+ '-- attenzione a quando abbiamo da stampare delle stringhe! e non dei valori numerici
+ Dim Text As ComboBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), ComboBoxParam)
+ sValue = String.Empty
+ For Index As Integer = 0 To Text.ItemList.Count - 1
+ If Text.SelItem = Text.ItemList(Index) Then sValue = Text.ItemListDDF(Index) : Return True
+ Next
+ sValue = Text.SelItem
+ Return True
+ End If
+
+ End If
+ Next
+ Next
+ Return True
+ End Function
+
+ ' lista delle riposte della funzione SaveControl
+ Enum SaveResult As Integer
+ nYes
+ nNo
+ nCancel
+ End Enum
+
+ ' restituisce il messaggio della selezione
+ Public Function SaveControl() As SaveResult
+ If Not Map.refMainWindowVM.ProjectNameMsg.Contains("*") Then Return SaveResult.nNo
+ Select Case MessageBox.Show("Do you want to save the current changes?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
+ Case MessageBoxResult.Yes ' decido di salvare
+ Save()
+ Return SaveResult.nYes
+ Case MessageBoxResult.No ' decido di non salvare
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = False
+ Return SaveResult.nNo
+ Case Else ' altrimenti interrompi sempre
+ Return SaveResult.nCancel
+ End Select
+ End Function
+
+#End Region ' Salvataggio, Duplica, Aggiorna
+
+ Public Sub New()
+ ' ogni nuovo hardware che creao devo avere la lista di componenti vuota
+ Me.ClearGroupChapters()
+ End Sub
+
+#End Region ' Genaral Function
+
+ Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
+ Public Sub NotifyPropertyChanged(propName As String)
+ RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
+ End Sub
+
+End Class
+
+Public Class TypeHardware
+ Inherits VMBase
+
+ 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_NameINI As String
+ Public Property NameINI As String
+ Get
+ Return m_NameINI
+ End Get
+ Set(value As String)
+ m_NameINI = value
+ End Set
+ End Property
+
+ Sub New(Name As String, NameINI As String)
+ m_Name = Name
+ m_NameINI = NameINI
+ NotifyPropertyChanged("Name")
+ NotifyPropertyChanged("NameINI")
+ End Sub
+
+End Class
diff --git a/HardwareManager/HardwarePageV.xaml b/HardwareManager/HardwarePageV.xaml
new file mode 100644
index 0000000..fa2c1e2
--- /dev/null
+++ b/HardwareManager/HardwarePageV.xaml
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/HardwareManager/HardwarePageV.xaml.vb b/HardwareManager/HardwarePageV.xaml.vb
new file mode 100644
index 0000000..06bada3
--- /dev/null
+++ b/HardwareManager/HardwarePageV.xaml.vb
@@ -0,0 +1,3 @@
+Public Class HardwarePageV
+
+End Class
diff --git a/HardwareManager/HardwarePageVM.vb b/HardwareManager/HardwarePageVM.vb
new file mode 100644
index 0000000..04815a9
--- /dev/null
+++ b/HardwareManager/HardwarePageVM.vb
@@ -0,0 +1,142 @@
+Imports System.Collections.ObjectModel
+Imports System.ComponentModel
+Imports System.IO
+Imports EgtUILib
+Imports System.Text.RegularExpressions
+Imports EgtWPFLib5
+
+Public Class HardwarePageVM
+ Inherits VMBase
+
+ Private m_Door As Part
+ Public Property Door As Part
+ Get
+ Return m_Door
+ End Get
+ Set(value As Part)
+ m_Door = value
+ NotifyPropertyChanged("Door")
+ End Set
+ End Property
+
+ Private m_CurrHardware As Hardware
+ Public Property CurrHardware As Hardware
+ Get
+ Return m_CurrHardware
+ End Get
+ Set(value As Hardware)
+ m_CurrHardware = value
+ NotifyPropertyChanged("CurrHardware")
+ End Set
+ End Property
+
+ ' l'elenco dei bottoni
+ Private m_CompoPanelPart As ContentControl
+ Public Property CompoPanelControl As ContentControl
+ Get
+ Return m_CompoPanelPart
+ End Get
+ Set(value As ContentControl)
+ m_CompoPanelPart = value
+ End Set
+ End Property
+
+ ' mostra la visibilità del general della pagina
+ Private m_VisibilityGeneral As Visibility = Visibility.Collapsed
+ Public Property VisibilityGeneral As Visibility
+ Get
+ Return m_VisibilityGeneral
+ End Get
+ Set(value As Visibility)
+ m_VisibilityGeneral = value
+ NotifyPropertyChanged("VisibilityGeneral")
+ End Set
+ End Property
+
+#Region "MESSAGES"
+
+ Public ReadOnly Property GeneralMsg As String
+ Get
+ Return "General"
+ End Get
+ End Property
+ Public ReadOnly Property TemplateMsg As String
+ Get
+ Return "Template"
+ End Get
+ End Property
+ Public ReadOnly Property TypeMsg As String
+ Get
+ Return "Type"
+ End Get
+ End Property
+ Public ReadOnly Property BrandMsg As String
+ Get
+ Return "Brand"
+ End Get
+ End Property
+
+#End Region ' Messages
+
+ ' definizione comando
+ Private m_EnterRefreshCmd As ICommand
+ Private m_F1GuideCmd As ICommand
+
+#Region "COMMANDS"
+
+ 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()
+ Map.refSceneManagerVM.RefreshBtn()
+ End Sub
+
+ ' Comando Guida
+ Public ReadOnly Property GuideCmd As ICommand
+ Get
+ If m_F1GuideCmd Is Nothing Then
+ m_F1GuideCmd = New Command(AddressOf F1Guide)
+ End If
+ Return m_F1GuideCmd
+ End Get
+ End Property
+
+ Public Sub F1Guide()
+ Dim rfGuideVM As New GuideVM
+ If String.IsNullOrEmpty(GuideVM.m_AddressGuide) Then
+ GuideVM.m_AddressGuide = "Test.html"
+ End If
+ Map.refProjectManagerVM.Guide()
+ End Sub
+
+#End Region ' Command
+
+ Public Function CreateDoor() As Boolean
+ Dim Hardware As String = String.Empty
+ ' questa stringa serve solo per costruire un overload della sub New!
+ Dim ref_Door As New Part(Hardware)
+ Door = ref_Door
+ Dim sTempFile As String = IniFile.m_sTempDir & "\" & TEMP_FILE
+ DdfFile.WriteDDFPartForTestHardware(Door, sTempFile, False, False)
+ ExecDoors(Map.refSceneManagerVM.ProjectScene, sTempFile)
+ Return True
+ End Function
+
+ Sub New()
+ Map.SetRefHardwarePageVM(Me)
+ ' se non esiste la lista dei componenti per l'HardwareManager viene creata nuova
+ If IsNothing(Map.refCompoPanelHardwareVM) Then Map.SetRefCompoPaneHardwarelVM(New CompoPanelVM("HardwarePage"))
+ ' se il ContentControl è vuoto allora viene creato nuovo
+ If IsNothing(m_CompoPanelPart) Then m_CompoPanelPart = New CompoPanelHardwareV
+ m_CompoPanelPart.DataContext = Map.refCompoPanelHardwareVM
+ End Sub
+
+End Class
+
+
diff --git a/IniFile.vb b/IniFile.vb
index c98123d..bc0ebb5 100644
--- a/IniFile.vb
+++ b/IniFile.vb
@@ -48,6 +48,8 @@ Friend Module IniFile
Friend m_DDFFilePath As String = String.Empty
' Path Doors directory
Friend m_sDoorsDirPath As String = String.Empty
+ ' Path StdTemplate.ini
+ Friend m_StdTemplate As String = String.Empty ' il percorso viene aggiornato ad ogni scelta dell'hardware in LoadType()
' EgtDoorCreator.ini
Public Function GetPrivateProfileLanguage(ByVal lpAppName As String, ByVal lpKeyName As String) As Language
@@ -128,6 +130,37 @@ Friend Module IniFile
Return EgtUILib.WritePrivateProfileString(IpAppName, IpKeyName, IpString, m_DefaultIniFile)
End Function
+ ' StdTemplate.ini
+ Public Function StdTemplateGetPrivateProfileString(IpAppName As String, IpKeyName As String, IpDefault As String, ByRef IpString As String) As Integer
+ Return EgtUILib.GetPrivateProfileString(IpAppName, IpKeyName, IpDefault, IpString, m_StdTemplate)
+ End Function
+
+ Public Function StdTemplateGetPrivateProfileList(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal List As List(Of String)) As Boolean
+ Dim sVal As String = String.Empty
+ StdTemplateGetPrivateProfileString(lpAppName, lpKeyName, "", sVal)
+ If String.IsNullOrEmpty(sVal) Then Return False
+ Dim sItems() As String = sVal.Split(",".ToCharArray)
+ ' se la lista ha almeno un elemento
+ If sItems.Count > 0 Then
+ For Index = 0 To sItems.Count() - 1
+ List.Add(Trim(sItems(Index)))
+ Next
+ End If
+ Return True
+ End Function
+
+ Public Function StdTemplateGetPrivateProfileChapterName(ByVal lpAppName As String, ByVal lpKeyName As String, ByRef sValueLua As String, ByRef sValue As String) As Boolean
+ Dim sVal As String = String.Empty
+ StdTemplateGetPrivateProfileString(lpAppName, lpKeyName, "", sVal)
+ If String.IsNullOrEmpty(sVal) Then Return False
+ Dim sItems() As String = sVal.Split("/".ToCharArray)
+ ' se la lista ha almeno un elemento
+ If sItems.Count = 0 Then Return False
+ If sItems.Count > 0 Then sValueLua = sItems(0)
+ If sItems.Count > 1 Then sValue = sItems(1)
+ Return True
+ End Function
+
' Config.ini di ciascun direttorio dei componenti (deve ricevere anche la path completa del file)
Public Function GetPrivateProfileCompoName(IpAppName As String, IpKeyName As String, ByRef DDFName As String, ByRef Name As String, CompoIniPath As String) As Boolean
Dim sVal As String = String.Empty
diff --git a/MainWindow/MainWindowV.xaml b/MainWindow/MainWindowV.xaml
index 2e22eba..31da0e2 100644
--- a/MainWindow/MainWindowV.xaml
+++ b/MainWindow/MainWindowV.xaml
@@ -14,9 +14,12 @@
-
+
+
+
+
-
+
@@ -24,11 +27,12 @@
-
+
-
-
+
+
+
diff --git a/MainWindow/MainWindowVM.vb b/MainWindow/MainWindowVM.vb
index ea60b71..84aefb2 100644
--- a/MainWindow/MainWindowVM.vb
+++ b/MainWindow/MainWindowVM.vb
@@ -9,14 +9,23 @@ Public Class MainWindowVM
' Modello del MainWindow (classe vera e propria)
Private m_MainWindowModel As New MainWindowModel
+ Private m_VisibilityAssemblyManager As Visibility = Visibility.Visible
+ Public Property VisibilityAssemblyManager As Visibility
+ Get
+ Return m_VisibilityAssemblyManager
+ End Get
+ Set(value As Visibility)
+ m_VisibilityAssemblyManager = value
+ NotifyPropertyChanged("VisibilityAssemblyManager")
+ End Set
+ End Property
+
Private m_ProjectNameMsg As String
Public Property ProjectNameMsg As String
Get
Return m_ProjectNameMsg
End Get
Set(value As String)
- ' sostituisco il nome del direttorio con il path completo
- 'm_ProjectNameMsg = "EgtDOORCreator - " & SetTitle(value)
m_ProjectNameMsg = "EgtDOORCreator - " & value
NotifyPropertyChanged("ProjectNameMsg")
End Set
@@ -47,6 +56,7 @@ Public Class MainWindowVM
nNothingSelected
nAssemblyPage
nDDFPage
+ nHardwarePage
End Enum
Private m_SelectedPage As ListPageEnum
@@ -60,17 +70,57 @@ Public Class MainWindowVM
End Set
End Property
+ Private m_ProjectManagerHardware As ProjectManagerHardwareV
+ Private m_ProjectManager As ProjectManagerV
+ Private m_AssemblyManager As AssemblyManagerV
Private m_PartPage As PartPageV
Private m_AssemblyPage As AssemblyPageV
+ Private m_HardwarePage As HardwarePageV
+
Public ReadOnly Property PageControl As ContentControl
Get
If m_SelectedPage = ListPageEnum.nDDFPage Then
- Return m_PartPage
- ElseIf m_SelectedPage = ListPageEnum.nAssemblyPage Then
- Return m_AssemblyPage
- Else
- Return Nothing
- End If
+ VisibilityAssemblyManager = Visibility.Visible
+ NotifyPropertyChanged("AssemblyManagerControl")
+ NotifyPropertyChanged("ProjectManagerControl")
+ Return m_PartPage
+ ElseIf m_SelectedPage = ListPageEnum.nAssemblyPage Then
+ VisibilityAssemblyManager = Visibility.Visible
+ NotifyPropertyChanged("AssemblyManagerControl")
+ NotifyPropertyChanged("ProjectManagerControl")
+ Return m_AssemblyPage
+ ElseIf m_SelectedPage = ListPageEnum.nHardwarePage Then
+ VisibilityAssemblyManager = Visibility.Collapsed
+ NotifyPropertyChanged("AssemblyManagerControl")
+ NotifyPropertyChanged("ProjectManagerControl")
+ Return m_HardwarePage
+ Else
+ VisibilityAssemblyManager = Visibility.Visible
+ NotifyPropertyChanged("AssemblyManagerControl")
+ NotifyPropertyChanged("ProjectManagerControl")
+ Return Nothing
+ End If
+ End Get
+ End Property
+
+ Public ReadOnly Property AssemblyManagerControl As ContentControl
+ Get
+ If VisibilityAssemblyManager = Visibility.Visible Then
+ Return m_AssemblyManager
+ Else
+ Return Nothing
+ End If
+ End Get
+ End Property
+
+ Public ReadOnly Property ProjectManagerControl As ContentControl
+ Get
+ If VisibilityAssemblyManager = Visibility.Visible Then
+ Return m_ProjectManager
+ Else
+ ProjectNameMsg = "HardwareManager"
+ Return m_ProjectManagerHardware
+ End If
End Get
End Property
@@ -78,8 +128,16 @@ Public Class MainWindowVM
Map.SetRefMainWindowVM(Me)
m_AssemblyPage = New AssemblyPageV
m_AssemblyPage.DataContext = New AssemblyPageVM
+ m_ProjectManagerHardware = New ProjectManagerHardwareV
+ m_ProjectManagerHardware.DataContext = New ProjectManagerHardwareVM
+ m_ProjectManager = New ProjectManagerV
+ m_ProjectManager.DataContext = New ProjectManagerVM
m_PartPage = New PartPageV
m_PartPage.DataContext = New PartPageVM
+ m_HardwarePage = New HardwarePageV
+ m_HardwarePage.DataContext = New HardwarePageVM
+ m_AssemblyManager = New AssemblyManagerV
+ m_AssemblyManager.DataContext = New AssemblyManagerVM
End Sub
' Comandi
@@ -109,32 +167,6 @@ Public Class MainWindowVM
End Select
End Sub
- ' questa funzione restituisce il nome del direttorio corrente
- Friend Function SetTitle(DirectoryTitle As String) As String
- If Not String.IsNullOrWhiteSpace(DirectoryTitle) Then
- Dim Items() As String = DirectoryTitle.Split("\".ToCharArray)
- If Items.Count = 1 Then
- Items = DirectoryTitle.Split("-".ToCharArray)
- End If
- ' restituisco il nome dell'ultimo direttorio aperto
- DirectoryTitle = Items(Items.Count - 1)
- End If
- Return DirectoryTitle
- End Function
-
- 'Friend Sub ModifyTitle(bModified As Boolean)
- ' If bModified Then
- ' If Not m_ProjectNameMsg(m_ProjectNameMsg.Count - 1) = "*" Then
- ' ProjectNameMsg &= "*"
- ' End If
- ' Else
- ' If m_ProjectNameMsg(m_ProjectNameMsg.Count - 1) = "*" Then
- ' ProjectNameMsg.Trim("*"c)
- ' End If
- ' End If
- 'End Sub
-
-
#Region "AboutBoxCommand"
' Returns a command that manage the MainWindow_Unloaded command
@@ -175,18 +207,41 @@ Public Class MainWindowVM
'''
Public Sub CloseApplication(ByVal param As Object)
' verifico se selezionato esiste e modificato
- If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified Then
- Dim sText As String = String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name))
- Select Case MessageBox.Show(sText, "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
- Case MessageBoxResult.Yes
- Map.refAssemblyManagerVM.Save(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
- If Not DdfFile.DDFIsCorrect Then Return ' se il ddf non è corretto non permetto il salvataggio
- Case MessageBoxResult.No
- ' Non faccio alcunchè
- Case MessageBoxResult.Cancel
- Return
- End Select
- End If
+ Select Case SelectedPage
+ Case ListPageEnum.nHardwarePage
+ If Not IsNothing(Map.refHardwarePageVM) And Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ If Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nCancel Then
+ Return
+ ElseIf Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nYes Then
+ Map.refHardwarePageVM.CurrHardware.Save()
+ End If
+ End If
+ Case Else
+ If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified Then
+ Dim sText As String = String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name))
+ Select Case MessageBox.Show(sText, "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
+ Case MessageBoxResult.Yes
+ Map.refAssemblyManagerVM.Save(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
+ If Not DdfFile.DDFIsCorrect Then Return ' se il ddf non è corretto non permetto il salvataggio
+ Case MessageBoxResult.No
+ ' Non faccio alcunchè
+ Case MessageBoxResult.Cancel
+ Return
+ End Select
+ End If
+ End Select
+ 'If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified Then
+ ' Dim sText As String = String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name))
+ ' Select Case MessageBox.Show(sText, "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
+ ' Case MessageBoxResult.Yes
+ ' Map.refAssemblyManagerVM.Save(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
+ ' If Not DdfFile.DDFIsCorrect Then Return ' se il ddf non è corretto non permetto il salvataggio
+ ' Case MessageBoxResult.No
+ ' ' Non faccio alcunchè
+ ' Case MessageBoxResult.Cancel
+ ' Return
+ ' End Select
+ 'End If
' scrivo il nome dell'ultimo file aperto
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) Then
WriteMainPrivateProfileString(S_LAUNCHERWINDOW, K_LASTPROJECT, Map.refAssemblyManagerVM.CurrProject.Name)
diff --git a/Map.vb b/Map.vb
index 43b8445..7f011db 100644
--- a/Map.vb
+++ b/Map.vb
@@ -3,7 +3,9 @@
Private m_refMainWindowVM As MainWindowVM
Private m_refStatusBarVM As StatusBarVM
Private m_refProjectManagerVM As ProjectManagerVM
+ Private m_refProjectManagerHardwareVM As ProjectManagerHardwareVM
Private m_refCompoPanelVM As CompoPanelVM
+ Private m_refCompoPanelHardwareVM As CompoPanelVM
Private m_refAssemblyManagerVM As AssemblyManagerVM
Private m_refPartPageVM As PartPageVM
Private m_refSceneManagerVM As SceneManagerVM
@@ -14,7 +16,7 @@
Private m_refShowPanelVM As ShowPanelVM
Private m_refAssemblyPageVM As AssemblyPageVM
-
+ Private m_refHardwarePageVM As HardwarePageVM
Private m_refOrderVM As OrderVM
Private m_refOptionsVM As OptionsVM
@@ -39,12 +41,24 @@
End Get
End Property
+ Public ReadOnly Property refProjectManagerHardwareVM As ProjectManagerHardwareVM
+ Get
+ Return m_refProjectManagerHardwareVM
+ End Get
+ End Property
+
Public ReadOnly Property refCompoPanelVM As CompoPanelVM
Get
Return m_refCompoPanelVM
End Get
End Property
+ Public ReadOnly Property refCompoPanelHardwareVM As CompoPanelVM
+ Get
+ Return m_refCompoPanelHardwareVM
+ End Get
+ End Property
+
Public ReadOnly Property refAssemblyManagerVM As AssemblyManagerVM
Get
Return m_refAssemblyManagerVM
@@ -105,6 +119,12 @@
End Get
End Property
+ Public ReadOnly Property refHardwarePageVM As HardwarePageVM
+ Get
+ Return m_refHardwarePageVM
+ End Get
+ End Property
+
#End Region ' Get
#Region "Set"
@@ -124,11 +144,21 @@
Return Not IsNothing(m_refProjectManagerVM)
End Function
+ Friend Function SetRefProjectManagerHardwareVM(ProjectManagerHardwareVM As ProjectManagerHardwareVM) As Boolean
+ m_refProjectManagerHardwareVM = ProjectManagerHardwareVM
+ Return Not IsNothing(m_refProjectManagerHardwareVM)
+ End Function
+
Friend Function SetRefCompoPanelVM(CompoPanelVM As CompoPanelVM) As Boolean
m_refCompoPanelVM = CompoPanelVM
Return Not IsNothing(m_refCompoPanelVM)
End Function
+ Friend Function SetRefCompoPaneHardwarelVM(CompoPanelHardwareVM As CompoPanelVM) As Boolean
+ m_refCompoPanelHardwareVM = CompoPanelHardwareVM
+ Return Not IsNothing(m_refCompoPanelHardwareVM)
+ End Function
+
Friend Function SetRefDoorManagerVM(DoorManagerVM As AssemblyManagerVM) As Boolean
m_refAssemblyManagerVM = DoorManagerVM
Return Not IsNothing(m_refAssemblyManagerVM)
@@ -179,6 +209,11 @@
Return Not IsNothing(m_refOptionsVM)
End Function
+ Friend Function SetRefHardwarePageVM(HardwarePageVM As HardwarePageVM) As Boolean
+ m_refHardwarePageVM = HardwarePageVM
+ Return Not IsNothing(m_refHardwarePageVM)
+ End Function
+
#End Region ' Set
#Region "Init"
@@ -194,7 +229,6 @@
Not IsNothing(m_refProjectManagerVM) AndAlso Not IsNothing(m_refCompoPanelVM) AndAlso
Not IsNothing(m_refAssemblyManagerVM) AndAlso Not IsNothing(m_refPartPageVM) AndAlso
Not IsNothing(m_refSceneManagerVM) AndAlso Not IsNothing(m_refOptionsVM)
-
End Function
#End Region ' Init
diff --git a/NewHardware/NewHardwareV.xaml b/NewHardware/NewHardwareV.xaml
new file mode 100644
index 0000000..a1214f0
--- /dev/null
+++ b/NewHardware/NewHardwareV.xaml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NewHardware/NewHardwareV.xaml.vb b/NewHardware/NewHardwareV.xaml.vb
new file mode 100644
index 0000000..d0b4fd9
--- /dev/null
+++ b/NewHardware/NewHardwareV.xaml.vb
@@ -0,0 +1,3 @@
+Public Class NewHardwareV
+
+End Class
diff --git a/NewHardware/NewHardwareVM.vb b/NewHardware/NewHardwareVM.vb
new file mode 100644
index 0000000..69f6005
--- /dev/null
+++ b/NewHardware/NewHardwareVM.vb
@@ -0,0 +1,142 @@
+Imports System.Collections.ObjectModel
+Imports System.IO
+Imports EgtWPFLib5
+
+' la finestra associata a queta classe serve per gestire la creazione di una copia (ivocata dal bottone Duplica)
+
+Public Class NewHardwareVM
+ Inherits VMBase
+
+ Public ReadOnly Property Title As String
+ Get
+ Return "New Hardware"
+ End Get
+ End Property
+
+ Public ReadOnly Property BrandMsg As String
+ Get
+ Return "Brand"
+ End Get
+ End Property
+
+ Public ReadOnly Property TemplateMsg As String
+ Get
+ Return "Template"
+ End Get
+ End Property
+
+ ' Comandi
+ Private m_cmdSave As ICommand
+ Private m_cmdCancel As ICommand
+ Private m_CmdCloseNewHardware As ICommand
+
+ Private m_HardwareGeneral As CompoType
+
+ Private m_BrandList As New ObservableCollection(Of String)
+ Public Property BrandList As ObservableCollection(Of String)
+ Get
+ Return m_BrandList
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_BrandList = value
+ End Set
+ End Property
+
+ Private m_SelBrand As String
+ Public Property SelBrand As String
+ Get
+ Return m_SelBrand
+ End Get
+ Set(value As String)
+ m_SelBrand = value
+ NotifyPropertyChanged("SelBrand")
+ End Set
+ End Property
+
+ Private m_Template As String
+ Public Property Template As String
+ Get
+ Return m_Template
+ End Get
+ Set(value As String)
+ m_Template = value
+ End Set
+ End Property
+
+ Sub New(HardwareGeneral As CompoType)
+ m_HardwareGeneral = HardwareGeneral
+ Dim ModelList As New ObservableCollection(Of CompoBrandDir)
+ GetDirectoryCompoModel(HardwareGeneral.Path, ModelList)
+ If ModelList.Count > 0 Then
+ For IndexModel As Integer = 0 To ModelList.Count - 1
+ m_BrandList.Add(ModelList(IndexModel).ModelDirGraphic)
+ Next
+ NotifyPropertyChanged("BrandList")
+ Dim SelItemindex As Integer = 0
+ While Path.HasExtension(m_BrandList(SelItemindex)) And SelItemindex < m_BrandList.Count - 1
+ SelItemindex += 1
+ End While
+ SelBrand = m_BrandList(SelItemindex)
+ Template = "File Name"
+ End If
+ End Sub
+
+ ' Returns a command that manage the MainWindow_Unloaded command
+ Public ReadOnly Property SaveCmd() As ICommand
+ Get
+ If m_cmdSave Is Nothing Then
+ m_cmdSave = New Command(AddressOf Save)
+ End If
+ Return m_cmdSave
+ End Get
+ End Property
+
+ Public Sub Save(ByVal param As Object)
+ If Map.refHardwarePageVM.CurrHardware.Duplicate(Trim(m_SelBrand), Trim(m_Template)) Then CloseNewHardware()
+ End Sub
+
+ ' Returns a command that manage the MainWindow_Unloaded command
+ Public ReadOnly Property CancelCmd() As ICommand
+ Get
+ If m_cmdCancel Is Nothing Then
+ m_cmdCancel = New Command(AddressOf Cancel)
+ End If
+ Return m_cmdCancel
+ End Get
+ End Property
+
+ ' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
+ Public Sub Cancel(ByVal param As Object)
+ CloseNewHardware()
+ End Sub
+
+#Region "CloseNewHardwareCommand"
+
+ '''
+ ''' Returns a command that remove the current selected machining.
+ '''
+ Public ReadOnly Property CloseNewHardwareCmd() As ICommand
+ Get
+ If m_CmdCloseNewHardware Is Nothing Then
+ m_CmdCloseNewHardware = New Command(AddressOf CloseNewHardware)
+ End If
+ Return m_CmdCloseNewHardware
+ End Get
+ End Property
+
+ '''
+ ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand.
+ '''
+ Public Sub CloseNewHardware()
+ ' Chiusura finestra
+ For Each Window In Application.Current.Windows
+ If TypeOf Window Is NewHardwareV Then
+ Dim NewHardwareWindow As NewHardwareV = DirectCast(Window, NewHardwareV)
+ NewHardwareWindow.Close()
+ End If
+ Next
+ End Sub
+
+#End Region ' CloseOptionsCommand
+
+End Class
diff --git a/OptionsWindow/OptionModule.vb b/OptionsWindow/OptionModule.vb
index 66836cc..1befdc8 100644
--- a/OptionsWindow/OptionModule.vb
+++ b/OptionsWindow/OptionModule.vb
@@ -34,6 +34,7 @@ Friend Module OptionModule
End Enum
Friend m_SmartHelp As Boolean = False
+ Friend m_DisableHM As Boolean = False
Friend m_Width As String
Friend m_Height As String
@@ -199,6 +200,14 @@ Friend Module OptionModule
m_SmartHelp = False
End If
+ Dim nDisableHM As Integer = 1
+ nDisableHM = GetMainPrivateProfileInt(S_GENERAL, K_DISABLEHM, 1)
+ If nDisableHM = 0 Then
+ m_DisableHM = True
+ Else
+ m_DisableHM = False
+ End If
+
' leggo il tipo di Bevel selezionato
Dim BevelUp As Visibility
DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELU_INI, BevelUp)
diff --git a/Print/PrintWndV.xaml b/Print/PrintWndV.xaml
new file mode 100644
index 0000000..cf7c204
--- /dev/null
+++ b/Print/PrintWndV.xaml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Print/PrintWndV.xaml.vb b/Print/PrintWndV.xaml.vb
new file mode 100644
index 0000000..95b8ca0
--- /dev/null
+++ b/Print/PrintWndV.xaml.vb
@@ -0,0 +1,14 @@
+Public Class PrintWndV
+
+ Private m_PrintWndVM As PrintWndVM
+
+ Sub New(Owner As Window, PrintWndVM As PrintWndVM)
+ MyBase.New(Owner)
+ ' This call is required by the designer.
+ InitializeComponent()
+ Me.DataContext = PrintWndVM
+ ' Assegno al riferimento locale al VM il VM preso dal DataContext
+ m_PrintWndVM = PrintWndVM
+ End Sub
+
+End Class
diff --git a/Print/PrintWndVM.vb b/Print/PrintWndVM.vb
new file mode 100644
index 0000000..461cc55
--- /dev/null
+++ b/Print/PrintWndVM.vb
@@ -0,0 +1,258 @@
+Imports System.Collections.ObjectModel
+Imports System.ComponentModel
+Imports System.IO
+Imports System.Windows
+Imports EgtUILib
+Imports EgtWPFLib5
+Imports Ionic.Zip
+
+Public Class PrintWndVM
+ Inherits VMBase
+
+ Shared m_Door As Part
+
+#Region "MESSAGES"
+
+ Public ReadOnly Property Title As String
+ Get
+ Return "Print"
+ End Get
+ End Property
+
+ Public ReadOnly Property PrintMsg As String
+ Get
+ Return "Print"
+ End Get
+ End Property
+
+ Public ReadOnly Property CancelMsg As String
+ Get
+ Return "Cancel"
+ End Get
+ End Property
+
+ Public ReadOnly Property PrintToolTip As String
+ Get
+ Return "Print"
+ End Get
+ End Property
+
+ Public ReadOnly Property HardwareMsg As String
+ Get
+ Return "Hardware"
+ End Get
+ End Property
+
+ Public ReadOnly Property DimensioningMsg As String
+ Get
+ Return "Dimensioning"
+ End Get
+ End Property
+
+#End Region ' Messages
+
+ Private m_DimensioningList As New ObservableCollection(Of String)({"All", "Door", "Hardware"})
+ Public ReadOnly Property DimensioningList As ObservableCollection(Of String)
+ Get
+ Return m_DimensioningList
+ End Get
+ End Property
+
+ Private m_SelDimensioning As String = m_DimensioningList(0)
+ Public Property SelDimensioning As String
+ Get
+ Return m_SelDimensioning
+ End Get
+ Set(value As String)
+ m_SelDimensioning = value
+ Dimensioning()
+ NotifyPropertyChanged("SelDimensioning")
+ End Set
+ End Property
+
+ Private m_IsEnableCompoList As Boolean = True
+ Public ReadOnly Property IsEnableCompoList As Boolean
+ Get
+ Return m_IsEnableCompoList
+ End Get
+ End Property
+
+ ' lista degli hardware presenti nelli porta corrente
+ Private m_CompoList As New ObservableCollection(Of HardwarePrint)
+ Public Property CompoList As ObservableCollection(Of HardwarePrint)
+ Get
+ Return m_CompoList
+ End Get
+ Set(value As ObservableCollection(Of HardwarePrint))
+ m_CompoList = value
+ End Set
+ End Property
+
+ Private Function Dimensioning() As Boolean
+ Select Case m_SelDimensioning
+ Case "All"
+ m_IsEnableCompoList = True
+ For IndexCompo As Integer = 0 To m_CompoList.Count - 1
+ CompoList(IndexCompo).SelectedLayer = True
+ Next
+ Case "Door"
+ m_IsEnableCompoList = False
+ For IndexCompo As Integer = 0 To m_CompoList.Count - 1
+ CompoList(IndexCompo).SelectedLayer = False
+ Next
+ Case "Hardware"
+ m_IsEnableCompoList = True
+ End Select
+ NotifyPropertyChanged("IsEnableCompoList")
+ Return True
+ End Function
+
+ Private m_cmdPrint As ICommand
+ Private m_cmdCancel As ICommand
+
+#Region "PrintCommand"
+
+ Public ReadOnly Property PrintCommand As ICommand
+ Get
+ If m_cmdPrint Is Nothing Then
+ m_cmdPrint = New Command(AddressOf Print)
+ End If
+ Return m_cmdPrint
+ End Get
+ End Property
+
+ Public Sub Print(ByVal param As Object)
+ Dim printDlg As New PrintDialog
+
+ If printDlg.ShowDialog() Then
+
+ ' Recupero le dimensioni dell'area di stampa
+ Dim dW As Double = printDlg.PrintableAreaWidth
+ Dim dH As Double = printDlg.PrintableAreaHeight
+
+ '' Nascondo la tavola ed eseguo zoom su quello che rimane
+ 'Dim nTabId As Integer = EgtGetTableId(MAIN_TAB)
+ 'EgtSetStatus(nTabId, GDB_ST.OFF)
+ EgtZoom(ZM.ALL, True)
+
+ ' Prendo l'immagine per la stampa
+ Dim colWhite As New Color3d(255, 255, 255)
+ Dim nImgW As Integer = 4000
+ Dim nImgH As Integer = 2400
+ Dim sPath As String = m_sTempDir & "\Image.png"
+ If Not EgtGetImage(SM.HIDDENLINE, colWhite, colWhite, nImgW, nImgH, sPath) Then
+ EgtOutLog("Errore creazione immagine di stampa")
+ Return
+ End If
+
+ '' Ripristino la visualizzazione della tavola
+ 'EgtSetStatus(nTabId, GDB_ST.ON_)
+ 'EgtZoom(ZM.ALL)
+ 'Thread.Sleep(10)
+
+ Try
+ 'Metodo complesso di stampa che permette di rilasciare il file :
+ 'carico la bitmap e la metto in uno stream in memoria
+ Dim stream As System.IO.Stream = New System.IO.MemoryStream()
+ Dim bitmap As System.Drawing.Bitmap = New System.Drawing.Bitmap(sPath)
+ bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png)
+ bitmap.Dispose()
+ ' la sposto in una BitmapImage
+ Dim bitImage As New System.Windows.Media.Imaging.BitmapImage()
+ bitImage.BeginInit()
+ bitImage.StreamSource = stream
+ bitImage.EndInit()
+ ' la sposto in un Visual Control
+ Dim tmpImg As New Image
+ tmpImg.BeginInit()
+ tmpImg.Source = bitImage
+ tmpImg.Margin = New Thickness(30)
+ ' ruoto a seconda dell'aspetto della pagina
+ If (dH > dW And nImgH < nImgW) Or (dH < dW And nImgH > nImgW) Then
+ tmpImg.LayoutTransform = New RotateTransform(-90)
+ End If
+ tmpImg.EndInit()
+ ' eseguo la stampa
+ printDlg.PrintVisual(tmpImg, "Parts Layout")
+ Catch
+ EgtOutLog("Errore esecuzione stampa")
+ End Try
+ End If
+ End Sub
+
+#End Region ' PrintCommand
+
+#Region "CancelCommand"
+
+ Public ReadOnly Property CancelCommand() As ICommand
+ Get
+ If m_cmdCancel Is Nothing Then
+ m_cmdCancel = New Command(AddressOf Close)
+ End If
+ Return m_cmdCancel
+ End Get
+ End Property
+
+ Public Sub Close()
+ ' Chiusura finestra
+ For Each Window In Application.Current.Windows
+ If TypeOf Window Is PrintWndV Then
+ Dim CurrWindow As PrintWndV = DirectCast(Window, PrintWndV)
+ CurrWindow.Close()
+ End If
+ Next
+ EgtSetCurrentContext(Map.refSceneManagerVM.ProjectScene.GetCtx)
+ End Sub
+
+#End Region ' CancelCommand
+
+ Sub New()
+ m_Door = Map.refPartPageVM.CurrPart
+ Dim IndexCompoDoor As Integer = 1
+ Dim IndexCompoPrint As Integer = 0
+
+ Dim LocalHardware As New HardwarePrint
+ If m_Door.CompoList.Count >= 1 Then
+ LocalHardware.NameHardware = m_Door.CompoList(0).CompoType.Name
+ LocalHardware.SelectedLayer = True
+ End If
+ CompoList.Add(LocalHardware)
+ While IndexCompoDoor < m_Door.CompoList.Count
+ If m_CompoList(IndexCompoPrint).NameHardware <> m_Door.CompoList(IndexCompoDoor).CompoType.Name Then
+ LocalHardware = New HardwarePrint
+ LocalHardware.NameHardware = m_Door.CompoList(IndexCompoDoor).CompoType.Name
+ LocalHardware.SelectedLayer = True
+ m_CompoList.Add(LocalHardware)
+ IndexCompoPrint += 1
+ End If
+ IndexCompoDoor += 1
+ End While
+ NotifyPropertyChanged("CompoList")
+ End Sub
+
+End Class
+
+Public Class HardwarePrint
+ Inherits VMBase
+
+ Private m_NameHardware As String
+ Public Property NameHardware As String
+ Get
+ Return m_NameHardware
+ End Get
+ Set(value As String)
+ m_NameHardware = value
+ End Set
+ End Property
+
+ Private m_SelectedLayer As Boolean = True
+ Public Property SelectedLayer As Boolean
+ Get
+ Return m_SelectedLayer
+ End Get
+ Set(value As Boolean)
+ m_SelectedLayer = value
+ NotifyPropertyChanged("SelectedLayer")
+ End Set
+ End Property
+End Class
\ No newline at end of file
diff --git a/PrintSceneHostV/PrintSceneHostV.xaml b/PrintSceneHostV/PrintSceneHostV.xaml
new file mode 100644
index 0000000..ae14549
--- /dev/null
+++ b/PrintSceneHostV/PrintSceneHostV.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/PrintSceneHostV/PrintSceneHostV.xaml.vb b/PrintSceneHostV/PrintSceneHostV.xaml.vb
new file mode 100644
index 0000000..19cf3dc
--- /dev/null
+++ b/PrintSceneHostV/PrintSceneHostV.xaml.vb
@@ -0,0 +1,102 @@
+Imports EgtUILib
+Imports EgtWPFLib5
+Imports System.IO
+
+Public Class PrintSceneHostV
+
+ Private m_SelFromScene As Boolean = False
+ Friend ReadOnly Property SelFromScene As Boolean
+ Get
+ Return m_SelFromScene
+ End Get
+ End Property
+
+ Public Sub RefreshPrint()
+ ExecDoorsPrinter(PrintScene, IniFile.m_sTempDir & "\" & TEMP_FILE)
+ End Sub
+
+ Sub New()
+ ' This call is required by the designer.
+ InitializeComponent()
+ '' Creo riferimento a questa classe in CompoWindowMap
+ 'CompoWindowMap.SetRefCompoSceneHostV(Me)
+ ' Inizializzazione Scena
+ PreInitializeScene()
+ PrintScene.Init()
+ PostInitializeScene()
+ ' Imposto stato gestione mouse diretto della scena a nessuno
+ PrintScene.SetStatusNull()
+ EgtSetCurrentContext(PrintScene.GetCtx)
+ RefreshPrint()
+ 'EgtNewFile()
+ 'EgtDraw()
+ 'EgtOpenFile(IniFile.m_sTempDir & "\" & Path.ChangeExtension(TEMP_FILE, ".nge"))
+ End Sub
+
+ Private Sub PreInitializeScene()
+ ' imposto colore di default
+ Dim DefColor As New Color3d(0, 0, 0)
+ GetMainPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor)
+ PrintScene.SetDefaultMaterial(DefColor)
+ ' imposto colori sfondo
+ Dim BackTopColor As New Color3d(192, 192, 192)
+ GetMainPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor)
+ Dim BackBotColor As New Color3d(BackTopColor)
+ GetMainPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor)
+ PrintScene.SetViewBackground(BackTopColor, BackBotColor)
+ ' imposto colore di evidenziazione
+ Dim MarkColor As New Color3d(255, 255, 0)
+ GetMainPrivateProfileColor(S_SCENE, K_MARK, MarkColor)
+ PrintScene.SetMarkMaterial(MarkColor)
+ ' imposto colore per superfici selezionate
+ Dim SelSurfColor As New Color3d(255, 255, 192)
+ GetMainPrivateProfileColor(S_SCENE, K_SELSURF, SelSurfColor)
+ PrintScene.SetSelSurfMaterial(SelSurfColor)
+ ' imposto tipo e colore del rettangolo di zoom
+ Dim bOutline As Boolean = True
+ Dim ZwColor As New Color3d(0, 0, 0)
+ GetMainPrivateProfileZoomWin(S_SCENE, K_ZOOMWIN, bOutline, ZwColor)
+ PrintScene.SetZoomWinAttribs(bOutline, ZwColor)
+ ' imposto colore della linea di distanza
+ Dim DstLnColor As New Color3d(255, 0, 0)
+ GetMainPrivateProfileColor(S_SCENE, K_DISTLINE, DstLnColor)
+ PrintScene.SetDistLineMaterial(DstLnColor)
+ ' imposto parametri OpenGL
+ Dim nDriver As Integer = GetMainPrivateProfileInt(S_OPENGL, K_DRIVER, 3)
+ Dim b2Buff As Boolean = (GetMainPrivateProfileInt(S_OPENGL, K_DOUBLEBUFFER, 1) <> 0)
+ Dim nColorBits As Integer = GetMainPrivateProfileInt(S_OPENGL, K_COLORBITS, 32)
+ Dim nDepthBits As Integer = GetMainPrivateProfileInt(S_OPENGL, K_DEPTHBITS, 32)
+ PrintScene.SetViewAttributes(nDriver, b2Buff, nColorBits, nDepthBits)
+ End Sub
+
+ Private Sub PostInitializeScene()
+ ' imposto tipo coordinate
+ PrintScene.SetGridCursorPos(True)
+ ' modo di visualizzazione
+ Dim nShowMode As Integer = GetMainPrivateProfileInt(S_SCENE, K_SHOWMODE, SM.HIDDENLINE)
+ EgtSetShowMode(DirectCast(nShowMode, SM))
+ '' visualizzazione avanzata dei triangoli costituenti le superfici
+ 'Dim bShowTriaAdv As Boolean = (GetMainPrivateProfileInt(S_SCENE, K_SHOWTRIAADV, 1) <> 0)
+ 'EgtSetShowTriaAdv(bShowTriaAdv)
+ '' tipo visualizzazione per Zmap
+ 'Dim nShowZmap As Integer = GetMainPrivateProfileInt(S_SCENE, K_SHOWZMAP, 1)
+ 'EgtSetShowZmap(DirectCast(nShowZmap, ZSM), False)
+ '' dati di griglia
+ 'Dim dSnapStep As Double = If(EgtUiUnitsAreMM(),
+ ' GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEP, 10),
+ ' GetMainPrivateProfileDouble(S_GRID, K_SNAPSTEPINCH, 12.7))
+ 'Dim nMinLineSStep As Integer = GetMainPrivateProfileInt(S_GRID, K_MINLINESSTEP, 1)
+ 'Dim nMajLineSStep As Integer = GetMainPrivateProfileInt(S_GRID, K_MAJLINESSTEP, 10)
+ 'Dim nExtSStep As Integer = GetMainPrivateProfileInt(S_GRID, K_EXTSSTEP, 50)
+ 'Dim MinLnColor As New Color3d(160, 160, 160)
+ 'GetMainPrivateProfileColor(S_GRID, K_MINLNCOLOR, MinLnColor)
+ 'Dim MajLnColor As New Color3d(160, 160, 160)
+ 'GetMainPrivateProfileColor(S_GRID, K_MAJLNCOLOR, MajLnColor)
+ 'EgtSetGridFrame(Frame3d.GLOB)
+ 'EgtSetGridGeo(dSnapStep, nMinLineSStep, nMajLineSStep, nExtSStep)
+ 'EgtSetGridColor(MinLnColor, MajLnColor)
+ 'Dim bShowGrid As Boolean = (GetMainPrivateProfileInt(S_GRID, K_SHOWGRID, 1) <> 0)
+ 'EgtSetGridShow(bShowGrid, False)
+ End Sub
+
+End Class
diff --git a/ProjectManager/ProjectManagerHardwareV.xaml b/ProjectManager/ProjectManagerHardwareV.xaml
new file mode 100644
index 0000000..111f239
--- /dev/null
+++ b/ProjectManager/ProjectManagerHardwareV.xaml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ProjectManager/ProjectManagerHardwareV.xaml.vb b/ProjectManager/ProjectManagerHardwareV.xaml.vb
new file mode 100644
index 0000000..c79b1a8
--- /dev/null
+++ b/ProjectManager/ProjectManagerHardwareV.xaml.vb
@@ -0,0 +1,3 @@
+Public Class ProjectManagerHardware
+
+End Class
diff --git a/ProjectManager/ProjectManagerHardwareVM.vb b/ProjectManager/ProjectManagerHardwareVM.vb
new file mode 100644
index 0000000..67e49ff
--- /dev/null
+++ b/ProjectManager/ProjectManagerHardwareVM.vb
@@ -0,0 +1,371 @@
+Imports System.Collections.ObjectModel
+Imports System.ComponentModel
+Imports System.IO
+Imports EgtUILib
+Imports EgtWPFLib5
+Imports Ionic.zip
+
+Public Class ProjectManagerHardwareVM
+ Implements INotifyPropertyChanged
+
+#Region "FIELDS & PROPERTIES"
+
+ Friend m_CurrProject As Project
+
+ ' Definizione comandi
+ Private m_cmdNew As ICommand
+ Private m_cmdSave As ICommand
+ Private m_cmdOptions As ICommand
+ Private m_cmdSendFeedback As ICommand
+ Private m_cmdGuide As ICommand
+ Private m_cmdDuplica As ICommand
+ Private m_cmdDoor As ICommand
+
+#Region "ToolTip"
+
+ 'Proprietà ToolTip
+ Public ReadOnly Property NewToolTip As String
+ Get
+ Return EgtMsg(MSG_TOPCOMMANDBAR + 1)
+ End Get
+ End Property
+ Public ReadOnly Property SaveToolTip As String
+ Get
+ Return EgtMsg(MSG_TOPCOMMANDBAR + 3)
+ End Get
+ End Property
+ Public ReadOnly Property SendFeedbackToolTip As String
+ Get
+ Return EgtMsg(50046)
+ End Get
+ End Property
+ Public ReadOnly Property OptionsToolTip As String
+ Get
+ Return EgtMsg(MSG_MAINWINDOW + 209)
+ End Get
+ End Property
+ Public ReadOnly Property GuideToolTip As String
+ Get
+ Return EgtMsg(50305)
+ End Get
+ End Property
+ Public ReadOnly Property Help As String
+ Get
+ Return EgtMsg(50305)
+ End Get
+ End Property
+ Public ReadOnly Property DuplicaToolTip As String
+ Get
+ Return "Duplicate"
+ End Get
+ End Property
+
+#End Region ' ToolTip
+
+#End Region ' Fields & Properties
+
+#Region "CONSTRUCTOR"
+
+ Sub New()
+ Map.SetRefProjectManagerHardwareVM(Me)
+ End Sub
+
+#End Region ' Constructor
+
+#Region "COMMANDS"
+
+#Region "NewCommand"
+
+ '''
+ ''' Returns a command that do New.
+ '''
+ Public ReadOnly Property NewCommand As ICommand
+ Get
+ If m_cmdNew Is Nothing Then
+ m_cmdNew = New Command(AddressOf NewCmd)
+ End If
+ Return m_cmdNew
+ End Get
+ End Property
+
+ '''
+ ''' Execute the New. This method is invoked by the NewCommand.
+ '''
+ Public Sub NewCmd()
+ If Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ ' controllo che quello che esiste sia salvato
+ If Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nCancel Then Return
+ ' notifico la modifica
+ Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified = True
+ Map.refHardwarePageVM.CurrHardware.ClearGroupChapters()
+ ' solo se il modello non esiste allora carico l'unico che può esistere
+ Map.refHardwarePageVM.CurrHardware.TemplateName = "File Name"
+ Map.refHardwarePageVM.CurrHardware.ReadChapterTemplate()
+ Map.refSceneManagerVM.RefreshBtn()
+ Map.refHardwarePageVM.CurrHardware.VisibilityTextTemplate = Visibility.Visible
+ Map.refHardwarePageVM.CurrHardware.IsEnableType = True
+ End If
+ End Sub
+
+#End Region ' NewCommand
+
+#Region "SaveCommand"
+
+ '''
+ ''' Returns a command that do Save.
+ '''
+ Public ReadOnly Property SaveCommand As ICommand
+ Get
+ If m_cmdSave Is Nothing Then
+ m_cmdSave = New Command(AddressOf Save)
+ End If
+ Return m_cmdSave
+ End Get
+ End Property
+
+ '''
+ ''' Execute the Save. This method is invoked by the SaveCommand.
+ '''
+ Public Sub Save()
+ If Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then Map.refHardwarePageVM.CurrHardware.Save()
+ End Sub
+
+#End Region ' SaveCommand
+
+#Region "OptionsCommand"
+
+ '''
+ ''' Returns a command that do Export.
+ '''
+ Public ReadOnly Property OptionsCommand As ICommand
+ Get
+ If m_cmdOptions Is Nothing Then
+ m_cmdOptions = New Command(AddressOf Options)
+ End If
+ Return m_cmdOptions
+ End Get
+ End Property
+
+ '''
+ ''' Execute the Export. This method is invoked by the ExportCommand.
+ '''
+ Public Sub Options(ByVal param As Object)
+ Dim OptionsWindow As New OptionsV
+ OptionsWindow.Height = 550
+ OptionsWindow.Width = 650
+ OptionsWindow.DataContext = New OptionsVM()
+ OptionsWindow.Owner = Application.Current.MainWindow
+ OptionsWindow.ShowDialog()
+ End Sub
+
+#End Region ' OptionsCommand
+
+#Region "SendFeedbackCommand"
+
+ '''
+ ''' Returns a command that do SendFeedback.
+ '''
+ Public ReadOnly Property SendFeedbackCommand As ICommand
+ Get
+ If m_cmdSendFeedback Is Nothing Then
+ m_cmdSendFeedback = New Command(AddressOf SendFeedback)
+ End If
+ Return m_cmdSendFeedback
+ End Get
+ End Property
+
+ '''
+ ''' Execute the SendFeedback. This method is invoked by the SendFeedbackCommand.
+ '''
+ Public Sub SendFeedback()
+ '' Recupero indirizzo a cui spedire la mail
+ 'Dim sSupportAddress As String = String.Empty
+ 'GetMainPrivateProfileString(S_GENERAL, K_SUPPORT, "support@egaltech.com", sSupportAddress)
+ '' se vuoto do messaggio di errore ed esco
+ 'If String.IsNullOrWhiteSpace(sSupportAddress) Then
+ ' MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 10), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
+ ' Return
+ 'End If
+ '' Recupero numero chiave
+ 'Dim sKey As String = String.Empty
+ 'EgtGetKeyInfo(sKey)
+ '' Recupero file del progetto corrente (tipo file .nge)
+ 'Dim sCurrProject As String = String.Empty
+ 'EgtGetCurrFilePath(sCurrProject)
+ '' se nome file vuoto, chiedo se si vuole salvare (file .nge)
+ 'If String.IsNullOrWhiteSpace(sCurrProject) Then
+ ' If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
+ ' Save()
+ ' End If
+ ' EgtGetCurrFilePath(sCurrProject)
+ ' ' se modificato, chiedo se si vuole salvare
+ 'Else
+ ' If EgtGetModified() Then
+ ' If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
+ ' Save()
+ ' End If
+ ' End If
+ 'End If
+ '' recuro il file DDF associato al file .nge
+ 'Dim sCurrProjectDDF As String = String.Empty
+ 'sCurrProjectDDF = IniFile.m_sTempDir & "\CurrPart.ddf"
+ '' recupero il file di log
+ 'Dim sFileLog As String = String.Empty
+ 'sFileLog = IniFile.m_sTempDir & "\EgtDOORCreatorLog1.txt"
+
+ '' Creo zip file da allegare
+ 'Dim sZipToCreate As String = IniFile.m_sTempDir & "\Feedback.zip"
+ 'If File.Exists(sZipToCreate) Then
+ ' File.Delete(sZipToCreate)
+ 'End If
+ 'Try
+ ' Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out)
+ ' ' aggiungo progetto corrente .nge
+ ' If File.Exists(sCurrProject) Then
+ ' zip.AddItem(sCurrProject, "")
+ ' End If
+ ' ' aggiungo progetto corrente .ddf
+ ' If File.Exists(sCurrProjectDDF) Then
+ ' zip.AddItem(sCurrProjectDDF, "")
+ ' End If
+ ' ' aggiungo file log
+ ' If File.Exists(sFileLog) Then
+ ' zip.AddItem(sFileLog, "")
+ ' End If
+ ' ' aggiungo la cartella Doors
+ ' If Directory.Exists(IniFile.m_sDoorsDirPath) Then
+ ' zip.AddItem(IniFile.m_sDoorsDirPath, "Doors")
+ ' End If
+ ' zip.Save()
+ ' End Using
+ 'Catch ex1 As Exception
+ ' EgtOutLog("Exception in zip: " & ex1.ToString())
+ 'End Try
+
+ '' preparo la mail per il supporto
+ 'Dim bEx As Boolean = False
+ 'Try
+ ' Dim SendFeedbackWindow As New EgtWPFLib5.MapiMailMessage("EgtDOORCreator Feedback - " & sKey)
+ ' SendFeedbackWindow.Recipients.Add(sSupportAddress)
+ ' If Not String.IsNullOrWhiteSpace(sZipToCreate) AndAlso File.Exists(sZipToCreate) Then
+ ' SendFeedbackWindow.Files.Add(IniFile.m_sTempDir & "\Feedback.zip")
+ ' End If
+ ' SendFeedbackWindow.ShowDialog()
+ 'Catch ex As Exception
+ ' EgtOutLog("Feedback exception: " & ex.ToString)
+ ' bEx = True
+ 'End Try
+ 'If bEx OrElse EgtWPFLib5.MapiMailMessage.m_ErrorCode <> 0 Then
+ ' MessageBox.Show(String.Format(EgtMsg(MSG_TOPCOMMANDBAR + 12), sSupportAddress, sZipToCreate), EgtMsg(MSG_EGTDOORCREATOR + 118), MessageBoxButton.OK, MessageBoxImage.Information)
+ ' ' stampo il messaggio nella StatusBar
+ ' Map.refStatusBarVM.StatusOutput = EgtMsg(MSG_TOPCOMMANDBAR + 14)
+ 'Else
+ ' ' stampo il messaggio nella StatusBar
+ ' Map.refStatusBarVM.StatusOutput = EgtMsg(MSG_TOPCOMMANDBAR + 14)
+ 'End If
+ End Sub
+
+#End Region ' SendFeedbackCommand
+
+#Region "Guide"
+ Public ReadOnly Property GuideCommand As ICommand
+ Get
+ If m_cmdGuide Is Nothing Then
+ m_cmdGuide = New Command(AddressOf Guide)
+ End If
+ Return m_cmdGuide
+ End Get
+ End Property
+
+ Public Sub Guide()
+ Dim GuideWindow As New GuideV(Application.Current.MainWindow, New GuideVM)
+ GuideWindow.Show()
+ End Sub
+
+#End Region ' Guide
+
+#Region "Duplica"
+
+ Public ReadOnly Property DuplicaCommand As ICommand
+ Get
+ If m_cmdDuplica Is Nothing Then
+ m_cmdDuplica = New Command(AddressOf Duplica)
+ End If
+ Return m_cmdDuplica
+ End Get
+ End Property
+
+ Public Sub Duplica()
+ If Not IsNothing(Map.refHardwarePageVM) And Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ If Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nCancel Then
+ Return
+ ElseIf Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nYes Then
+ Map.refHardwarePageVM.CurrHardware.Save()
+ End If
+ End If
+
+ If Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ Dim refNewHardwareV As New NewHardwareV
+ Dim refNewhardwareVM As New NewHardwareVM(Map.refHardwarePageVM.CurrHardware.HardwareGeneral)
+ refNewHardwareV.DataContext = refNewhardwareVM
+ refNewHardwareV.Owner = Application.Current.MainWindow
+ refNewHardwareV.ShowDialog()
+ refNewHardwareV.Close()
+ End If
+
+ End Sub
+
+
+#End Region ' Duplica
+
+#Region "Door"
+
+ Public ReadOnly Property DoorCommand As ICommand
+ Get
+ If m_cmdDoor Is Nothing Then
+ m_cmdDoor = New Command(AddressOf GoToPartPage)
+ End If
+ Return m_cmdDoor
+ End Get
+ End Property
+
+ Public Sub GoToPartPage()
+ ' controllo che sia stato salvato
+ If Not IsNothing(Map.refHardwarePageVM) And Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ If Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nCancel Then
+ Return
+ ElseIf Map.refHardwarePageVM.CurrHardware.SaveControl() = Hardware.SaveResult.nYes Then
+ Map.refHardwarePageVM.CurrHardware.Save()
+ End If
+ End If
+ ' torna all'EgtDOORCreator
+ If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage
+ Else
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage
+ Map.refCompoPanelVM.GoBackVisibility = Visibility.Collapsed
+ End If
+ ' elimino i riferimenti all'hardware corrente
+ Map.refHardwarePageVM.CurrHardware = Nothing
+ ' spengo il focus su tutti i bottoni
+ For IndexCompoType As Integer = 0 To Map.refCompoPanelHardwareVM.CompoTypeList.Count - 1
+ Map.refCompoPanelHardwareVM.CompoTypeList(IndexCompoType).IsSelectedBtn = False
+ Next
+ Map.refHardwarePageVM.CompoPanelControl.DataContext = Map.refCompoPanelHardwareVM
+ Map.refProjectManagerVM.OpenLastProject()
+ Map.refSceneManagerVM.RefreshBtn()
+ CompoMatch.ResetHMD()
+ End Sub
+
+
+#End Region ' LastProject
+
+#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
\ No newline at end of file
diff --git a/ProjectManager/ProjectManagerV.xaml b/ProjectManager/ProjectManagerV.xaml
index 460c3e5..a5c6d12 100644
--- a/ProjectManager/ProjectManagerV.xaml
+++ b/ProjectManager/ProjectManagerV.xaml
@@ -1,50 +1,62 @@
-
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Print
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hardware
+
+
+
diff --git a/ProjectManager/ProjectManagerVM.vb b/ProjectManager/ProjectManagerVM.vb
index 41b3a6b..0db0a24 100644
--- a/ProjectManager/ProjectManagerVM.vb
+++ b/ProjectManager/ProjectManagerVM.vb
@@ -8,6 +8,16 @@ Imports Ionic.zip
Public Class ProjectManagerVM
Implements INotifyPropertyChanged
+ Public ReadOnly Property DisableHM As Visibility
+ Get
+ If OptionModule.m_DisableHM Then
+ Return Visibility.Visible
+ Else
+ Return Visibility.Collapsed
+ End If
+ End Get
+ End Property
+
#Region "FIELDS & PROPERTIES"
Friend m_CurrProject As Project
@@ -20,6 +30,7 @@ Public Class ProjectManagerVM
Private m_cmdInsert As ICommand
Private m_cmdImport As ICommand
Private m_cmdExport As ICommand
+ Private m_cmdPrint As ICommand
Private m_cmdOptions As ICommand
Private m_CmdLastProject As ICommand
Private m_cmdSendFeedback As ICommand
@@ -27,6 +38,7 @@ Public Class ProjectManagerVM
Private m_cmdGuide As ICommand
Private m_cmdCopy As ICommand
Private m_cmdDuplica As ICommand
+ Private m_cmdHardware As ICommand
#Region "ToolTip"
@@ -100,6 +112,11 @@ Public Class ProjectManagerVM
Return "Duplicate"
End Get
End Property
+ Public ReadOnly Property PrintToolTip As String
+ Get
+ Return "Print"
+ End Get
+ End Property
#End Region ' ToolTip
@@ -338,9 +355,18 @@ Public Class ProjectManagerVM
Public Sub OpenLastProject()
' Apro l'ultimo progetto
+ Dim CurrName As String = String.Empty
+ If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
+ If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
+ CurrName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name
+ End If
+ End If
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
' carico il percorso dell'ultimo progetto salvato (sul file Config.ini)
- CurrProject.Name = OptionModule.m_sLastProject
+ If IsNothing(CurrProject.Name) Then
+ CurrProject.Name = OptionModule.m_sLastProject
+ End If
+
' ripulisco la lista di porte
CurrProject.AssemblyList.Clear()
' verifico che esista la cartella
@@ -364,8 +390,20 @@ Public Class ProjectManagerVM
'Map.refMainWindowVM.ModifyTitle(False)
' Se c'è almeno una porta la visualizzo
If CurrProject.AssemblyList.Count > 0 Then
+ If Not IsNothing(CurrName) Then
+ For IndexListAss As Integer = 0 To CurrProject.AssemblyList.Count - 1
+ If CurrName = CurrProject.AssemblyList(IndexListAss).Name Then
+ Map.refAssemblyManagerVM.Open(CurrProject.AssemblyList(IndexListAss))
+ Return
+ End If
+ Next
+ End If
Map.refAssemblyManagerVM.Open(CurrProject.AssemblyList(0))
+ Else
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
End If
+ Else
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
End If
End Sub
@@ -605,6 +643,7 @@ Public Class ProjectManagerVM
End Property
Public Sub Duplica()
+ If IsNothing(Map.refAssemblyManagerVM.CurrProject) Then Return
If Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified() Then
MessageBox.Show("Project must be saved before copying", EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
Return
@@ -673,8 +712,62 @@ Public Class ProjectManagerVM
End Sub
+#End Region ' Duplica
+
+#Region "Hardware"
+
+ Public ReadOnly Property HardwareCommand As ICommand
+ Get
+ If m_cmdHardware Is Nothing Then
+ m_cmdHardware = New Command(AddressOf GoToHardwarePage)
+ End If
+ Return m_cmdHardware
+ End Get
+ End Property
+
+ Public Sub GoToHardwarePage()
+ ' se decido di annullare l'operazione di salvataggio
+ If Not Map.refAssemblyManagerVM.ManageModified() Then Return
+ ' prima di continuare salvo il riferimento all'ultima cartella aperta
+ Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nHardwarePage
+ ' nascondo la visibilità del bottono goback dalla lista dei bottoni
+ Map.refCompoPanelHardwareVM.GoBackVisibility = Visibility.Collapsed
+ Map.refHardwarePageVM.VisibilityGeneral = Visibility.Collapsed
+ ' creo una porta per il disegno dell'Hardware
+ Map.refHardwarePageVM.CreateDoor()
+ Map.refSceneManagerVM.RefreshBtn()
+ ' carico la lista dei nomi delle geometrie
+ CompoMatch.LoadTableGeometry()
+ End Sub
+
+
#End Region ' LastProject
+#Region "PrintCommand"
+
+ Public ReadOnly Property PrintCommand As ICommand
+ Get
+ If m_cmdPrint Is Nothing Then
+ m_cmdPrint = New Command(AddressOf Print)
+ End If
+ Return m_cmdPrint
+ End Get
+ End Property
+
+ Public Sub Print(ByVal param As Object)
+ If IsNothing(Map.refAssemblyManagerVM.CurrProject) Then Return
+ If Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified() Then
+ MessageBox.Show("Project must be saved before printing", EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
+ Return
+ End If
+ Dim PrintWindow As New PrintWndV(Application.Current.MainWindow, New PrintWndVM)
+ PrintWindow.Height = 550
+ PrintWindow.Width = 650
+ PrintWindow.ShowDialog()
+ End Sub
+
+#End Region ' PrintCommand
+
#End Region ' Commands
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
diff --git a/RegexFunction.vb b/RegexFunction.vb
index 5e4e7aa..de01ec0 100644
--- a/RegexFunction.vb
+++ b/RegexFunction.vb
@@ -31,8 +31,38 @@ Module RegexFunction
End If
End Function
+ ' restituisce il nome del modello
+ Friend Function ModelTemplate(sLine As String) As String
+ Dim Model As String = Regex.Match(sLine, "\s* (Compo)\s*\/\s*(.*?\b)\s*$").Groups(2).Value
+ If Not String.IsNullOrEmpty(Model) Then
+ Return Model
+ Else
+ Model = Regex.Match(sLine, "\s*(Compo)\s*\\\s*(.*?\b)\s*$").Groups(2).Value
+ End If
+ If Not String.IsNullOrEmpty(Model) Then
+ Return Model
+ Else
+ Return sLine
+ End If
+ End Function
+
+ ' dato il direttorio restituisce il nome del file
+ Friend Function SubStractDirFromPath(sLine As String, sLastDir As String) As String
+ Dim Model As String = Regex.Match(sLine, "\s* (" & sLastDir & ")\s*\/\s*(.*?\b)\s*$").Groups(2).Value
+ If Not String.IsNullOrEmpty(Model) Then
+ Return Model
+ Else
+ Model = Regex.Match(sLine, "\s*(" & sLastDir & ")\s*\\\s*(.*?\b)\s*$").Groups(2).Value
+ End If
+ If Not String.IsNullOrEmpty(Model) Then
+ Return Model
+ Else
+ Return sLine
+ End If
+ End Function
+
Friend Function ParamExpression(sLine As String) As String
- Return Regex.Match(sLine, " \s*\(*\s*(.*?\b)\s*\).*$").Groups(1).Value
+ Return Regex.Match(sLine, "\s*\(*\s*(.*?\b)\s*\).*$").Groups(1).Value
End Function
' Cerca la stringa con 3 trattini
@@ -97,4 +127,10 @@ Module RegexFunction
Return sLine
End Function
+ Friend Function GetNameParamInFileTempl(sLine As String) As String
+ If sLine.Contains("%") Then sLine = Regex.Match(sLine, "\s*\%*\s*(.*?)\s*\%.*$").Groups(1).Value : Return sLine
+ Return String.Empty
+ End Function
+
+
End Module
diff --git a/SceneManager/SceneManagerVM.vb b/SceneManager/SceneManagerVM.vb
index c4aa868..4c0d5fa 100644
--- a/SceneManager/SceneManagerVM.vb
+++ b/SceneManager/SceneManagerVM.vb
@@ -2,6 +2,7 @@
Imports System.IO
Imports System.Windows.Forms.Integration
Imports EgtUILib
+Imports System.Collections.ObjectModel
Imports EgtWPFLib5
Public Class SceneManagerVM
@@ -288,15 +289,68 @@ Public Class SceneManagerVM
If Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage Then
DdfFile.WriteDDFPart(Map.refPartPageVM.CurrPart, sTempFile, True, False)
ExecDoors(m_ProjectScene, sTempFile)
- Else
+ ElseIf Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage Then
DdfFile.WriteDDFAssembly(Map.refAssemblyPageVM.CurrAssembly, sTempFile, True)
ExecDoors(m_ProjectScene, sTempFile)
+
+ ElseIf Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nHardwarePage Then
+ If Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ Map.refHardwarePageVM.CurrHardware.RefreshTempHardware()
+ End If
+ DdfFile.WriteDDFPartForTestHardware(Map.refHardwarePageVM.Door, sTempFile, False, False)
+ Dim sNameModel As String = String.Empty
+ If Not IsNothing(Map.refHardwarePageVM.CurrHardware) Then
+ Dim nFirstPart As Integer = EgtGetFirstPart()
+ For IndexChapter As Integer = 0 To Map.refHardwarePageVM.CurrHardware.GroupChapters.Count - 1
+ Dim ParamList As ObservableCollection(Of CompoParam) = Map.refHardwarePageVM.CurrHardware.GroupChapters(IndexChapter).CompoParamList
+ For IndexParamInChapter As Integer = 0 To ParamList.Count - 1
+ If ParamList(IndexParamInChapter).DDFName.Contains(".Nome") Then
+ If TypeOf ParamList(IndexParamInChapter) Is TextBoxParam Then
+ ExecDoors(m_ProjectScene, sTempFile)
+ Dim sNome As String = DirectCast(ParamList(IndexParamInChapter), TextBoxParam).Value
+ Dim nCurrObject As Integer = EgtGetFirstNameInGroup(nFirstPart, sNome)
+ Dim sSide As String = String.Empty
+ IniFile.GetPrivateProfileJambSide(S_POSITIONSIDE, K_SIDE, sSide, Map.refHardwarePageVM.CurrHardware.HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME)
+ If String.IsNullOrEmpty(sSide) Then
+ ' controllo nell'elenco dei parametri se esiste un parametro di tipo Side
+ For IndexParam As Integer = 0 To ParamList.Count - 1
+ If ParamList(IndexParam).DDFName.ToLower = "side" Then
+ Side = DirectCast(ParamList(IndexParam), ComboBoxParam).SelItem
+ Exit For
+ End If
+ Next
+ End If
+ Select Case sSide.ToLower
+ Case "hinge"
+ EgtSetView(VT.ISO_NE)
+ Case "lock"
+ EgtSetView(VT.ISO_NW)
+ Case "top"
+ EgtSetView(VT.ISO_NW)
+ Case "bottom"
+ EgtSetView(VT.ISO_SW)
+ End Select
+ EgtZoomObject(nCurrObject)
+ Return
+ End If
+ End If
+ Next
+ Next
+ End If
+ ExecDoors(m_ProjectScene, sTempFile)
End If
ShowGraphicError()
End Sub
#End Region ' RefreshBtnCommand
+ Public Function Dimensionning(sLayerName As String, bSelect As Boolean) As Boolean
+ Dim nFirstPart As Integer = EgtGetFirstPart()
+ Dim nLayer As Integer = EgtGetFirstNameInGroup(nFirstPart, sLayerName)
+ If bSelect Then EgtSetStatus(nLayer, GDB_ST.ON_) Else EgtSetStatus(nLayer, GDB_ST.OFF)
+ Return True
+ End Function
+
#Region "AssemblyBtnCommand"
Public Sub AssemblyBtn()
diff --git a/Utility.vb b/Utility.vb
index 67b75ee..f3f6d22 100644
--- a/Utility.vb
+++ b/Utility.vb
@@ -107,6 +107,94 @@ Public Module Utility
Return Index
End Function
+#Region "PARAM LUA"
+
+ ' elimina i commenti nel file lua
+ Friend Function DeleteLuaComment(sLine As String) As String
+ sLine = Trim(sLine)
+ If sLine.Contains("--") Then
+ If sLine.StartsWith("--") Then Return String.Empty
+ sLine = Regex.Match(sLine, "\s*(.*?)\s*\--\s*\.*").Groups(1).Value
+ Return sLine
+ Else
+ Return sLine
+ End If
+ End Function
+
+ ' controllo che il valore in lettura sia una misura
+ Friend Function GetMeasure(sValue As String) As String
+ Dim dVal As Double = 0.0
+ If sValue.Contains("(") And sValue.Contains(")") Then
+ sValue = Regex.Match(sValue, "\s*\((.*?)\s*\)\s*\.*").Groups(1).Value
+ If String.IsNullOrEmpty(sValue) Then Return "0.0000"
+ ' ricevo un valore in inches
+ Select Case OptionModule.m_SelectedMeasureUnit
+ Case "Inches" ' se la configurazione è inches non faccio conversioni
+ If StringToDouble(sValue, dVal) Then
+ Return sValue
+ Else
+ Return "0.0000"
+ End If
+ Case "mm" ' se la configurazione è in mm faccio la conevrsione
+ If InchesToMm(sValue) Then
+ Return sValue
+ Else
+ Return "0.0000"
+ End If
+ End Select
+ End If
+ ' il valore che ricevo è in mm
+ Select Case OptionModule.m_SelectedMeasureUnit
+ Case "Inches" ' se la configurazione è inches faccio conversione
+ If MmToInches(sValue) Then
+ Return sValue
+ Else
+ Return "0.0000"
+ End If
+ Case "mm" ' se la configurazione è in mm non faccio la conevrsione
+ If StringToDouble(sValue, dVal) Then
+ Return sValue
+ Else
+ Return "0.0000"
+ End If
+ End Select
+ ' se non è nessuno dei casi restituisco zero
+ Return "0.0000"
+ End Function
+
+ Friend Function InchesToMm(ByRef sMeasure As String) As Boolean
+ Dim dVal As Double = 0.0
+ If Not StringToDouble(sMeasure, dVal) Then Return False
+ dVal = dVal * 25.4
+ sMeasure = DoubleToString(dVal, 4)
+ Return True
+ End Function
+
+ Friend Function MmToInches(ByRef sMeasure As String) As Boolean
+ Dim dVal As Double = 0.0
+ If Not StringToDouble(sMeasure, dVal) Then Return False
+ dVal = dVal / 25.4
+ sMeasure = DoubleToString(dVal, 4)
+ Return True
+ End Function
+
+ Friend Function ConvertCheckBox(sValue As String) As Boolean
+ If Trim(sValue.ToLower) = "true" Then Return True Else Return False
+ End Function
+
+ ' elimina gli apici di una variabile
+ Friend Function DeleteSuperScript(sLine As String) As String
+ Return sLine.Replace("'"c, " "c)
+ End Function
+
+ Friend Function FindNameParam(sLine As String) As String
+ sLine = RegexFunction.GetNameParamInFileTempl(sLine)
+ If String.IsNullOrEmpty(sLine) Then Return String.Empty
+ Return sLine
+ End Function
+
+#End Region ' Param lua
+
' Converte il valore Boolean in una stringa ON/OFF (attributo machining)
Friend Function ConvertBooleanToOnOff(bValue As Boolean) As String
Return If(bValue, DDF_ON, DDF_OFF)
@@ -149,11 +237,52 @@ Public Module Utility
Next
End Sub
- Friend Sub GetDirectoryCompoFiles(DirectoryPath As String, ByRef FileList As List(Of String))
+ Friend Sub GetDirectoryCompoFiles(DirectoryPath As String, ByRef FileList As ObservableCollection(Of String))
GetDirectoryCompoFiles(DirectoryPath, DirectoryPath, FileList)
End Sub
- Private Sub GetDirectoryCompoFiles(DirectoryPath As String, BaseDirectory As String, ByRef FileList As List(Of String))
+ Friend Sub GetDirectoryCompoModel(DirectoryPath As String, ByRef ModelList As ObservableCollection(Of CompoBrandDir))
+ Dim BaseDirName As String = RegexFunction.ModelTemplate(DirectoryPath)
+ Dim Model() As String = Directory.GetDirectories(DirectoryPath)
+ 'Dim ModelList As New ObservableCollection(Of CompoModelDir)
+ For IndexModel As Integer = 0 To Model.Count - 1
+ ModelList.Add(New CompoBrandDir(Model(IndexModel), BaseDirName))
+ GetDirectoryCompoFiles(Model(IndexModel), ModelList(IndexModel).ModelFileList)
+ Next
+ Dim ListFiles() As String = Directory.GetFiles(DirectoryPath)
+ If ControlList(ListFiles) Then
+ ModelList.Add(New CompoBrandDir(RegexFunction.ModelTemplate(DirectoryPath), BaseDirName))
+ For IndexFiles As Integer = 0 To ListFiles.Count - 1
+ If ControlFile(ListFiles(IndexFiles)) Then
+
+ ' Elimino il direttorio base dei componenti
+ Dim sFile As String = ListFiles(IndexFiles).Replace(DirectoryPath & "\", "")
+ ' Elimino estensione lua
+ If LUA_EXTENSION = Path.GetExtension(ListFiles(IndexFiles)) Then sFile = Path.ChangeExtension(sFile, Nothing)
+ ModelList(ModelList.Count - 1).ModelFileList.Add(sFile)
+ End If
+ Next
+ End If
+ End Sub
+
+ Private Function ControlList(ByRef List() As String) As Boolean
+ For Index As Integer = 0 To List.Count - 1
+ If ControlFile(List(Index)) Then Return True
+ Next
+ Return False
+ End Function
+
+ Private Function ControlFile(Item As String) As Boolean
+ If Path.GetExtension(Item) = ".ini" Or Path.GetExtension(Item) = ".templ" Then
+ Return False
+ ElseIf Path.GetExtension(Item) = ".lua" And Item.Contains("Matching") Then
+ Return False
+ Else
+ Return True
+ End If
+ End Function
+
+ Private Sub GetDirectoryCompoFiles(DirectoryPath As String, BaseDirectory As String, ByRef FileList As ObservableCollection(Of String))
Dim SubDir() As String = Directory.GetDirectories(DirectoryPath)
For Index = 0 To SubDir.Count - 1
GetDirectoryCompoFiles(SubDir(Index), BaseDirectory, FileList)
@@ -178,17 +307,38 @@ Public Module Utility
End Module
-Public Class SplitConverter
- Implements IValueConverter
+Public Class CompoBrandDir
- Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
- Dim dValue As Double = CDbl(value)
- Dim nParam As Integer = CInt(parameter)
- Return dValue / nParam
- End Function
+ Private m_ModelDirGraphic As String
+ Public ReadOnly Property ModelDirGraphic As String
+ Get
+ Return m_ModelDirGraphic
+ End Get
+ End Property
- Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
- Throw New NotImplementedException
- End Function
+ Private m_ModelDir As String
+ Public Property ModelDir As String
+ Get
+ Return m_ModelDir
+ End Get
+ Set(value As String)
+ m_ModelDir = value
+ End Set
+ End Property
-End Class
\ No newline at end of file
+ Private m_ModelFileList As New ObservableCollection(Of String)
+ Public Property ModelFileList As ObservableCollection(Of String)
+ Get
+ Return m_ModelFileList
+ End Get
+ Set(value As ObservableCollection(Of String))
+ m_ModelFileList = value
+ End Set
+ End Property
+
+ Sub New(Model As String, BaseDirName As String)
+ m_ModelDir = Model
+ m_ModelDirGraphic = RegexFunction.SubStractDirFromPath(Model, BaseDirName)
+ End Sub
+
+End Class