b216319e9b
- correzioni per W, H e T in componenti (in file come DGD.dW, DGD.dH, DGD.dT) in HardwareManager.
1294 lines
59 KiB
VB.net
1294 lines
59 KiB
VB.net
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 m_GroupChapterName As New ObservableCollection(Of String)
|
|
Dim ErrorReading As String = String.Empty
|
|
Dim BackupDir As String = IniFile.m_CompoDir & ConstGen.BACKUPDIR
|
|
Dim bNewHardware As Boolean = False
|
|
|
|
' Path StdTemplate.ini
|
|
Private m_StdTemplate As String = String.Empty ' il percorso viene aggiornato ad ogni scelta dell'hardware in LoadType()
|
|
Public ReadOnly Property StdTemplate As String
|
|
Get
|
|
Return m_StdTemplate
|
|
End Get
|
|
End Property
|
|
|
|
' 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"
|
|
|
|
Public ReadOnly Property BrandList As ObservableCollection(Of CompoBrandDir)
|
|
Get
|
|
If Not IsNothing(m_HardwareGeneral) Then
|
|
Return m_HardwareGeneral.HardwareFolderList
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_SelBrand As CompoBrandDir
|
|
Public Property SelBrand As CompoBrandDir
|
|
Get
|
|
Return m_SelBrand
|
|
End Get
|
|
Set(value As CompoBrandDir)
|
|
DeleteTempFile()
|
|
m_SelBrand = value
|
|
If Not IsNothing(m_SelBrand) Then
|
|
' Carico lista template
|
|
TemplateList = m_SelBrand.ModelFileList
|
|
If m_SelBrand.ModelFileList.Count > 0 Then
|
|
SelTemplate = m_SelBrand.ModelFileList(0)
|
|
Else
|
|
SelTemplate = String.Empty
|
|
End If
|
|
Else
|
|
SelTemplate = String.Empty
|
|
End If
|
|
NotifyPropertyChanged("SelBrand")
|
|
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
|
|
ClearGroupChapters() ' Prima di procedere ripulisco la pagina dai vecchi paramatri
|
|
If Not String.IsNullOrWhiteSpace(m_SelTemplate) Then
|
|
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
|
|
ReadChapterTemplate() ' Rileggo i parametri del SetTemplate
|
|
ReadTemplate(m_SelTemplate) ' Carico i dati del template
|
|
End If
|
|
Map.refSceneManagerVM.RefreshBtn() ' Creo un file temporaneo per gestire la grafica
|
|
NotifyPropertyChanged("SelTemplate")
|
|
NotifyPropertyChanged("TemplateList")
|
|
ShowErrorMsg()
|
|
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_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
|
|
|
|
' se non dovessere esistere un tipo, al momento del salvataggio cerca il file con nome Template ed estensione .Templ
|
|
Private m_SelType As TypeHardware = New TypeHardware(TYPE_STD_TEMPLATE, TYPE_STD_TEMPLATE_INI)
|
|
Public Property SelType As TypeHardware
|
|
Get
|
|
Return m_SelType
|
|
End Get
|
|
Set(value As TypeHardware)
|
|
' verifico se tipo è cambiato
|
|
Dim bChanged As Boolean = If(Not IsNothing(m_SelType), value.NameINI <> m_SelType.NameINI, True)
|
|
m_SelType = value
|
|
' se cambiato carico il suo progetto con quotature/suggerimenti
|
|
If bChanged Then Map.refHardwareHelpSceneHostV.LoadHelpProject()
|
|
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"
|
|
|
|
Public Function ShowErrorMsg() As Boolean
|
|
If Not String.IsNullOrEmpty(ErrorReading) Then
|
|
MessageBox.Show(ErrorReading, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
' elimina il file temporaneo CurrHardware.lua
|
|
Public Function DeleteTempFile() As Boolean
|
|
Dim CurrHardwareFile As String = String.Empty
|
|
Dim ModelDir As String = String.Empty
|
|
If IsNothing(m_SelBrand) Then Return False
|
|
If m_SelBrand.ModelDir <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand.ModelDirGraphic & "\"
|
|
CurrHardwareFile = m_HardwareGeneral.Path & "\" & ModelDir & ConstGen.TEMP_FILE_HARDWARE
|
|
Try
|
|
File.Delete(CurrHardwareFile)
|
|
Catch ex As Exception
|
|
End Try
|
|
Return True
|
|
End Function
|
|
|
|
' Carica il nome della Componente, La lista dei template, La lista dei tipi
|
|
Public Sub LoadTemplate(ByRef CurrCompoType As CompoType)
|
|
' carico il general dell'hardware
|
|
m_HardwareGeneral = CurrCompoType
|
|
NotifyPropertyChanged("BrandList")
|
|
bTypeListExist = LoadType() ' carico la lista dei Type
|
|
If Not bTypeListExist Then
|
|
'SelBrand = Nothing
|
|
SelBrand = BrandList(0)
|
|
ElseIf BrandList.Count > 0 Then
|
|
SelBrand = BrandList(0)
|
|
Else
|
|
EgtNewFile()
|
|
End If
|
|
Dim ErrorList As String = String.Empty
|
|
If EgtUILib.GetPrivateProfileInt(S_TEMPLATE, K_ISACTIVE, 1, CurrCompoType.Path & "\" & CONFIGINI_FILE_NAME) = 0 Then
|
|
VisibilityTemplate = Visibility.Collapsed
|
|
NotifyPropertyChanged("VisibilityTemplate")
|
|
End If
|
|
End Sub
|
|
|
|
' carico la lista dei tipi --> devo stampare gli errori
|
|
Private Function LoadType() As Boolean
|
|
' costruisco la Path del template da leggere
|
|
m_StdTemplate = m_HardwareGeneral.Path & "\" & STD_TEMPLATE
|
|
If Not File.Exists(m_StdTemplate) Then Return False
|
|
Dim List As New List(Of String) ' lista temporanea "1/Mort"
|
|
If IniFile.StdTemplateGetPrivateProfileList(S_HARDWARE, K_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)))
|
|
Else
|
|
' In file StdTempate.ini is missing numeric param in [Type]
|
|
ErrorReading = EgtMsg(50171) & vbCrLf
|
|
TypeList.Add(New TypeHardware(EgtMsg(50101), "0"))
|
|
Return False ' interrompo la lettura
|
|
End If
|
|
Next
|
|
NotifyPropertyChanged("TypeList")
|
|
NotifyPropertyChanged("TypeListName")
|
|
Else
|
|
m_TypeList.Add(New TypeHardware(TYPE_STD_TEMPLATE, TYPE_STD_TEMPLATE_INI))
|
|
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
|
|
SelType = TypeList(IndexListType)
|
|
VisibilityType = Visibility.Visible
|
|
NotifyPropertyChanged("SelType")
|
|
Exit For
|
|
End If
|
|
Next
|
|
' inizio la lettura del file lua selezionato
|
|
Dim CurrItemPath As String = CurrPath()
|
|
Dim ErrorMsg As String = String.Empty
|
|
' se il file ha estensione nge
|
|
If Path.HasExtension(CurrItemPath) AndAlso Path.GetExtension(CurrItemPath).ToLower = NGE_EXTENSION Then
|
|
' File does not exist
|
|
If Not File.Exists(CurrItemPath) Then ErrorReading = EgtMsg(50172) & vbCrLf : Return False ' controllo che esiste il file altrimenti esco
|
|
Dim ConfigDefault As String = String.Empty ' configurazione del template
|
|
EgtUILib.GetPrivateProfileString(S_NGECONFIG, K_DEFAULT, "", ConfigDefault, m_HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME)
|
|
For IndexTypeList As Integer = 0 To TypeList.Count - 1
|
|
' Definition type is not correct:
|
|
If TypeList(IndexTypeList).NameINI = ConfigDefault Then Exit For Else ErrorReading = EgtMsg(50173) & ConfigDefault & vbCrLf : Return False
|
|
Next
|
|
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
|
|
' File does not exist
|
|
If Not File.Exists(CurrItemPath) Then ErrorReading = EgtMsg(50172) & vbCrLf : 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
|
|
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
|
|
' 50162 =In file {0} param 'Default' must be numeric.
|
|
ErrorReading = String.Format(EgtMsg(50162), CurrItemPath)
|
|
ErrorReading &= vbCrLf
|
|
Return False ' valore letto non è numerico
|
|
Else
|
|
For IndexListType As Integer = 0 To TypeList.Count - 1
|
|
If TypeList(IndexListType).NameINI = ConfigDefault Then
|
|
SelType = TypeList(IndexListType)
|
|
NotifyPropertyChanged("SelType")
|
|
Exit For
|
|
End If
|
|
Next
|
|
Exit For
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
' ricerca il nome dei capitoli associati e chiama la lettura dei parametri
|
|
Public Sub ReadChapterTemplate()
|
|
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) Is SelType Then
|
|
IndexChapter = m_TypeList(IndexTypeList).NameINI
|
|
Exit For
|
|
End If
|
|
Next
|
|
Dim Swing As String = String.Empty
|
|
If StdTemplateGetPrivateProfileGroupChapter(S_HARDWARE, "Swing", Swing) Then
|
|
Map.refHardwarePageVM.Door.SetSwing(Swing)
|
|
End If
|
|
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, 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
|
|
|
|
' legge il nome del parametro
|
|
If StdTemplateGetPrivateProfileChapterName(S_CHAPTER & ChapterIndex, K_NAME, LuaName, Name) Then
|
|
Chapter.TemplateName = Name
|
|
End If
|
|
' leggo il nome dei capitoli dei parametri
|
|
Dim GroupName As String = String.Empty
|
|
If StdTemplateGetPrivateProfileGroupChapter(S_CHAPTER & ChapterIndex, "GroupChapter", GroupName) Then
|
|
Chapter.GroupNameChapter = GroupName
|
|
SetGroupChaptername(Trim(GroupName))
|
|
End If
|
|
Dim bIsActive As Boolean = True
|
|
' legge se è attivo
|
|
Dim nIsActive As Integer = StdTemplateGetPrivateProfileInt(S_CHAPTER & ChapterIndex, K_ISACTIVE, nIsActive)
|
|
' verifico che non stia leggendo un nuovo hardware
|
|
If Not bNewHardware And nIsActive <> 2 Then
|
|
nIsActive = 0
|
|
End If
|
|
Select Case nIsActive
|
|
Case 0
|
|
Chapter.SetIsFixed(False)
|
|
Chapter.SetIsActiveChapter(False)
|
|
Case 1
|
|
Chapter.SetIsFixed(False)
|
|
Chapter.SetIsActiveChapter(True)
|
|
Case 2
|
|
Chapter.SetIsFixed(True)
|
|
Chapter.SetIsActiveChapter(True)
|
|
End Select
|
|
|
|
While EgtUILib.GetPrivateProfileString(S_CHAPTER & ChapterIndex, K_PARAM & ParamIndex, "", sParam, 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)
|
|
Dim sHelpParam As String = String.Empty
|
|
EgtUILib.GetPrivateProfileString(S_CHAPTER & ChapterIndex, "HelpParam" & ParamIndex, "", sHelpParam, m_StdTemplate)
|
|
' leggo il tipo di parametro, se la lettura va a buon fine la carico
|
|
If Chapter.ReadParamHardware(sParam, sHelpParam, NewParam, ErrorReading) 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
|
|
End Sub
|
|
|
|
' carico la liste dei nomi dei capitoli
|
|
Private Function SetGroupChaptername(sName As String) As Boolean
|
|
If m_GroupChapterName.Count = 0 Then m_GroupChapterName.Add(sName)
|
|
Dim bFounded As Boolean = False
|
|
For Index1 As Integer = 0 To m_GroupChapterName.Count - 1
|
|
If m_GroupChapterName(Index1) = sName Then
|
|
bFounded = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
If Not bFounded Then m_GroupChapterName.Add(sName)
|
|
Return True
|
|
End Function
|
|
|
|
' 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 CurrItemPath As String = CurrPath()
|
|
|
|
Dim Version As String = "2" ' 2 è la versione nuova, 1 la versione vecchia
|
|
Dim IsActiveVersion As Integer = 0
|
|
Dim MakeHole As Boolean = False
|
|
If StdTemplateGetPrivateProfileChapterVersioning("Versioning", "IsActive", IsActiveVersion) Then
|
|
Version = "1"
|
|
End If
|
|
|
|
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
|
|
' file does not exists
|
|
If Not File.Exists(CurrItemPath) Then ErrorMsg = EgtMsg(50172) : 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
|
|
|
|
' cerco la versione caricata
|
|
If IsActiveVersion = 1 Then
|
|
For Each Line In FileContent
|
|
Dim CurrLine As String = Utility.DeleteLuaComment(Line)
|
|
Dim sLine() As String = CurrLine.Split("="c)
|
|
If sLine.Count < 2 OrElse sLine.Count > 2 Then Continue For
|
|
If sLine(0).Contains(".VER") Then
|
|
If Not IsNothing(sLine(1)) AndAlso IsNumeric(sLine(1).Replace("'", "")) Then
|
|
Version = Trim(sLine(1).Replace("'", ""))
|
|
End If
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
Select Case Version
|
|
Case "2"
|
|
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
|
|
' nuova versione
|
|
Case "1"
|
|
' se è una lock
|
|
If m_HardwareGeneral.DDFName = "locks" Then
|
|
' cerco il Parametro mh per l'attivazione del foro
|
|
For Each Line In FileContent
|
|
Dim CurrLine As String = Utility.DeleteLuaComment(Line)
|
|
Dim sLine() As String = CurrLine.Split("="c)
|
|
If sLine.Count < 2 OrElse sLine.Count > 2 Then Continue For
|
|
If Trim(sLine(0)) = "tLkmPar.mh" Then
|
|
If Not IsNothing(sLine(1)) AndAlso Trim(sLine(1)) = "true" Then
|
|
MakeHole = True
|
|
End If
|
|
Exit For
|
|
End If
|
|
Next
|
|
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
|
|
FindParamTemplateInConfigListOldVersionLock(Trim(sLine(0)), Trim(sLine(1)), MakeHole)
|
|
Next
|
|
Return True
|
|
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
|
|
End Select
|
|
For IndexName As Integer = 0 To m_GroupChapterName.Count - 1
|
|
CascadedChapter(m_GroupChapters, m_GroupChapterName(IndexName))
|
|
Next
|
|
Return True
|
|
End Function
|
|
|
|
Private Function CascadedChapter(CompoList As ObservableCollection(Of Compo), sGroupName As String) As Boolean
|
|
' salvo l'indice del primo parametro visibile
|
|
Dim bLastVisible As Boolean = False
|
|
For Index As Integer = 0 To CompoList.Count - 1
|
|
If CompoList(Index).GroupNameChapter <> sGroupName Then Continue For
|
|
If CompoList(Index).IsActiveChapter Then
|
|
CompoList(Index).GroupVisibilityChapter = Visibility.Visible
|
|
ElseIf Not CompoList(Index).IsActiveChapter And Not bLastVisible Then
|
|
CompoList(Index).GroupVisibilityChapter = Visibility.Visible
|
|
bLastVisible = True
|
|
Else
|
|
CompoList(Index).GroupVisibilityChapter = Visibility.Collapsed
|
|
End If
|
|
Next
|
|
Return True
|
|
End Function
|
|
|
|
' caricamento dei dati del file lua
|
|
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
|
|
' allora significa che tutto il capitolo associato deve essere attivo
|
|
m_GroupChapters(IndexGroupChapters).SetIsActiveChapter(True)
|
|
If TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxDGCParam Then
|
|
Dim Text As TextBoxDGCParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxDGCParam)
|
|
' se testo numerico, eseguo opportunbe conversioni per H,W e T
|
|
sValue = ConvertToDGD(Text.TypeVar, sValue)
|
|
' separare il valore tra parentesi dai termini fuoir parentesi
|
|
Dim sItems() As String = sValue.Split("+"c)
|
|
If sItems.Count > 2 Then
|
|
For IndexArray As Integer = 1 To sItems.Count - 2
|
|
sItems(0) &= "+" & sItems(IndexArray)
|
|
Next
|
|
sItems(1) = sItems(sItems.Count - 1)
|
|
End If
|
|
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 TextBoxThicknessParam Then
|
|
Dim Text As TextBoxThicknessParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxThicknessParam)
|
|
' se testo numerico, eseguo opportunbe conversioni per H,W e T
|
|
sValue = ConvertToDGD(Text.TypeVar, sValue)
|
|
Dim dVal As Double
|
|
Text.SetConst(Text.ConstList(2))
|
|
Text.SetValue("")
|
|
If StringToDouble(sValue, dVal) AndAlso dVal < 0.0 Then
|
|
For IndexItem As Integer = 0 To Text.ConstList.Count - 1
|
|
If Text.ConstList(IndexItem).dValue = dVal Then
|
|
Text.SetConst(Text.ConstList(IndexItem))
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
If Text.SelConst.Name = OptionModule.m_SelectedMeasureUnit Then
|
|
Dim sLen As String = Trim(Utility.GetMeasure(sValue))
|
|
Text.SetValue(sLen)
|
|
End If
|
|
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxNgeParam Then
|
|
Dim Text As TextBoxNgeParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxNgeParam)
|
|
Text.SetValue(Trim(Utility.DeleteSuperScript(sValue)))
|
|
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxParam Then
|
|
Dim Text As TextBoxParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxParam)
|
|
' se testo numerico, eseguo opportunbe conversioni per H,W e T
|
|
sValue = ConvertToDGD(Text.TypeVar, sValue)
|
|
' controllo il tipo di dato che si aspetta
|
|
Select Case Text.TypeVar
|
|
Case ConstGen.INCHES
|
|
Dim sLen As String = Trim(Utility.GetMeasure(sValue))
|
|
Text.SetValue(sLen)
|
|
Case ConstGen.MM
|
|
Dim sLen As String = Trim(Utility.GetMeasure(sValue))
|
|
Text.SetValue(sLen)
|
|
Case ConstGen.VAL_DOUBLE
|
|
Dim dVal As Double = 0.0
|
|
If StringToDouble(sValue, dVal) Then Text.SetValue(sValue) Else Text.SetValue("0.000")
|
|
Case ConstGen.VAL_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 ComboBoxParamLua Then
|
|
Dim Text As ComboBoxParamLua = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), ComboBoxParamLua)
|
|
Text.SetSelItem(Text.ItemList(0))
|
|
For IndexCombo As Integer = 0 To Text.ItemListDDF.Count - 1
|
|
If Trim(Utility.DeleteSuperScript(Text.ItemListDDF(IndexCombo))) = Trim(Utility.DeleteSuperScript(sValue)) Then Text.SetSelItem(Text.ItemList(IndexCombo))
|
|
Next
|
|
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(Utility.DeleteSuperScript(Text.ItemListDDF(IndexCombo))) = Trim(Utility.DeleteSuperScript(sValue)) Then Text.SetSelItem(Text.ItemList(IndexCombo))
|
|
Next
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is GhostParam Then
|
|
Dim Text As GhostParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), GhostParam)
|
|
Text.Value = sValue
|
|
End If
|
|
Return True
|
|
End If
|
|
Next
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
' so già che il file contiene un foro al posto di una mortise
|
|
Private Function FindParamTemplateInConfigListOldVersionLock(sParam As String, sValue As String, MakeHole As Boolean) As Boolean
|
|
If MakeHole Then
|
|
Select Case sParam
|
|
Case "tLkmPar.L2"
|
|
sParam = ""
|
|
Case "tLkmPar.H2"
|
|
sParam = "tLkmPar.HB2"
|
|
Case "tLkmPar.T2"
|
|
sParam = "tLkmPar.TB2"
|
|
Case "tLkmPar.D_X"
|
|
sParam = "tLkmPar.DH_X"
|
|
Case "tLkmPar.LG2"
|
|
sParam = ""
|
|
Case "tLkmPar.LA"
|
|
sParam = ""
|
|
Case "tLkmPar.s"
|
|
sParam = ""
|
|
Case "tLkmPar.p2"
|
|
sParam = ""
|
|
Case "tLkmPar.d2"
|
|
sParam = ""
|
|
End Select
|
|
Else
|
|
Select Case sParam
|
|
Case "tLkmPar.LGH"
|
|
sParam = ""
|
|
End Select
|
|
End If
|
|
Return FindParamTemplateInConfigList(sParam, sValue)
|
|
End Function
|
|
|
|
#End Region ' Caricamneto
|
|
|
|
#Region "Salvataggio, Duplica, Nuovo, Aggiorna"
|
|
|
|
Public Function Duplicate(sSelBrand As String, sTemplate As String) As Boolean
|
|
If IsNothing(sTemplate) Then
|
|
' Missing name of the new template!
|
|
MessageBox.Show(EgtMsg(50174), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return False
|
|
End If
|
|
' ricostruico il percorso del file da dupicare
|
|
Dim OldDirPath As String = CurrPath()
|
|
' ricostruisco il nuovo file da creare
|
|
Dim ModelDir As String = 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 m_HardwareGeneral.HardwareFolderList.Count - 1
|
|
If m_HardwareGeneral.HardwareFolderList(IndexModel).ModelDirGraphic = sSelBrand Then
|
|
TemSelBrand = m_HardwareGeneral.HardwareFolderList(IndexModel).ModelDirGraphic
|
|
Temp_TemplateList = m_HardwareGeneral.HardwareFolderList(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 Temp_TemplateList.Count - 1
|
|
If Temp_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
|
|
' The file: {0} already exist in directory {1} . Do you want to overwrite it
|
|
Select Case MessageBox.Show(String.Format(EgtMsg(50175), sTemplate, sSelBrand), "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning)
|
|
' decido di sovrescrivere il file esistente
|
|
Case MessageBoxResult.Yes
|
|
' non eseguo nulla perchè il file è sempre se stesso!
|
|
Return True
|
|
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 Temp_TemplateList.Count - 1
|
|
If Temp_TemplateList(IndexTempList) = sTemplate Then
|
|
Temp_TemplateList.RemoveAt(IndexTempList)
|
|
Exit For
|
|
End If
|
|
Next
|
|
' carico le variabili temporanee e aggiorno la grafica (lista dei file e Brand selezionato)
|
|
SelBrand = m_HardwareGeneral.HardwareFolderList(IndexModel)
|
|
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
|
|
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()
|
|
SetLayerName(sTemplate)
|
|
Return True
|
|
End Function
|
|
|
|
Public Function NewHardware(sSelBrand As String, sTemplate As String, sType As TypeHardware) As Boolean
|
|
' ricostruico il percorso del file nuovo
|
|
Dim ModelDir As String = String.Empty
|
|
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 m_HardwareGeneral.HardwareFolderList.Count - 1
|
|
If m_HardwareGeneral.HardwareFolderList(IndexModel).ModelDirGraphic = sSelBrand Then
|
|
TemSelBrand = m_HardwareGeneral.HardwareFolderList(IndexModel).ModelDirGraphic
|
|
Temp_TemplateList = m_HardwareGeneral.HardwareFolderList(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 Temp_TemplateList.Count - 1
|
|
If Temp_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
|
|
' The file: {0} already exist in directory {1} . Do you want to overwrite it
|
|
Select Case MessageBox.Show(String.Format(EgtMsg(50175), sTemplate, sSelBrand), "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 il nome dalla lista dei file (alla fine il nome verrà aggiunto ancora)
|
|
For IndexTempList As Integer = 0 To Temp_TemplateList.Count - 1
|
|
If Temp_TemplateList(IndexTempList) = sTemplate Then
|
|
Temp_TemplateList.RemoveAt(IndexTempList)
|
|
Exit For
|
|
End If
|
|
Next
|
|
' carico le variabili temporanee e aggiorno la grafica (lista dei file e Brand selezionato)
|
|
bNewHardware = True
|
|
SelBrand = m_HardwareGeneral.HardwareFolderList(IndexModel)
|
|
TemplateList = Temp_TemplateList
|
|
SelType = sType
|
|
NotifyPropertyChanged("TemplateList")
|
|
NotifyPropertyChanged("SelBrand")
|
|
' ripulisco la lista da eventuali residui di altri Hardware
|
|
ClearGroupChapters()
|
|
' rileggo le component dell'hardware da StdTemplate
|
|
ReadChapterTemplate()
|
|
' salvo il nome del file corrente nel Layer
|
|
SetLayerName(sTemplate)
|
|
bNewHardware = False
|
|
Dim ErrorMsg As String = String.Empty
|
|
Dim NewFileContent As New ObservableCollection(Of String)
|
|
If Not WriteFile(NewFileContent) Then Return False
|
|
|
|
' scrivo tutto sul file corrente
|
|
Try
|
|
File.WriteAllLines(CurrDirPath, NewFileContent)
|
|
Catch ex As System.IO.IOException
|
|
' Error in copying:
|
|
MessageBox.Show(String.Format(EgtMsg(50176), ex.Message))
|
|
Return False
|
|
End Try
|
|
|
|
RefreshTemplateListEgtDOORCreator()
|
|
Map.refProjectManagerHardwareVM.IsModified = False
|
|
|
|
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
|
|
|
|
' nel caso di creazione di nuovo Hardware questa funzione attribuisce il nome del file al parametro Nome (quello usato dal layer)
|
|
Private Function SetLayerName(sTemplateName As String) As Boolean
|
|
For Each Compo In m_GroupChapters
|
|
For Each Param In Compo.CompoParamList
|
|
If Param.DDFName.Contains(".Nome") And TypeOf Param Is TextBoxParam Then
|
|
Dim Text As TextBoxParam = DirectCast(Param, TextBoxParam)
|
|
Text.Value = Trim(sTemplateName)
|
|
Return True
|
|
End If
|
|
Next
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
' per caricare a video il nome del file nge caricato dalla tabella
|
|
Public Function SetGeometryName(sGeometryName As String) As Boolean
|
|
For Each Compo In m_GroupChapters
|
|
For Each Param In Compo.CompoParamList
|
|
If Param.DDFName.Contains(".CGF") And TypeOf Param Is TextBoxNgeParam Then
|
|
Dim Text As TextBoxNgeParam = DirectCast(Param, TextBoxNgeParam)
|
|
Text.SetValue(Trim(sGeometryName))
|
|
Return True
|
|
End If
|
|
Next
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
Public Function DuplicateGeometryName(OldTemplateName As String) As Boolean
|
|
Dim OldGeometryName As String = String.Empty
|
|
For Each Compo In m_GroupChapters
|
|
For Each Param In Compo.CompoParamList
|
|
If Param.DDFName.Contains(".CGF") And TypeOf Param Is TextBoxNgeParam Then
|
|
Dim Text As TextBoxNgeParam = DirectCast(Param, TextBoxNgeParam)
|
|
If Not String.IsNullOrEmpty(Text.Value) Then
|
|
OldGeometryName = Path.GetDirectoryName(Me.CurrPath) & "\" & Text.Value
|
|
Dim NewGeometryName As String = CopyGeometryName(OldTemplateName, OldGeometryName)
|
|
Try
|
|
File.Copy(OldGeometryName, NewGeometryName, True)
|
|
Catch ex As System.IO.IOException
|
|
' Error in copying:
|
|
MessageBox.Show(String.Format(EgtMsg(50176), ex.Message))
|
|
' interrompo la copia e la creazione
|
|
Return False
|
|
End Try
|
|
Text.SetValue(Path.GetFileName(NewGeometryName))
|
|
Return True
|
|
End If
|
|
End If
|
|
Next
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
Private Function CopyGeometryName(OldTemplateName As String, OldGeometryName As String) As String
|
|
Dim CurrDir As String = Path.GetDirectoryName(OldGeometryName)
|
|
Dim OldFileName As String = Path.GetFileName(OldGeometryName)
|
|
If OldFileName.Contains(OldTemplateName) Then
|
|
Return CurrDir & "\" & OldFileName.Replace(OldTemplateName, Me.m_SelTemplate)
|
|
Else
|
|
Return CurrDir & "\" & Me.m_SelTemplate & "_" & OldFileName
|
|
End If
|
|
Return String.Empty
|
|
End Function
|
|
|
|
' crea il file temporaneao per aggiornare la parte grafica
|
|
Public Function RefreshTempHardware() As Boolean
|
|
Dim ErrorMsg As String = String.Empty
|
|
' Pulisco da componenti precedenti
|
|
Map.refHardwarePageVM.Door.CompoList.Clear()
|
|
If String.IsNullOrWhiteSpace(Map.refHardwarePageVM.CurrHardware.SelTemplate) Then Return False
|
|
Dim NewFileContent As New ObservableCollection(Of String)
|
|
If Not WriteFile(NewFileContent) Then Return False
|
|
' costruisco il nome del percorso del file corrente
|
|
Dim ModelDir As String = String.Empty
|
|
If m_SelBrand.ModelDir <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand.ModelDirGraphic & "\"
|
|
Dim sTempFileHardw As String = m_HardwareGeneral.Path & "\" & ModelDir & TEMP_FILE_HARDWARE
|
|
' salvo il file
|
|
File.WriteAllLines(sTempFileHardw, NewFileContent)
|
|
' aggiungo la componente
|
|
Map.refHardwarePageVM.Door.AddNewHardware(m_HardwareGeneral, ModelDir & Path.GetFileNameWithoutExtension(TEMP_FILE_HARDWARE))
|
|
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.Name & ".templ "
|
|
If Not File.Exists(TemplFile) Then Return False
|
|
Dim FileContent() As String = File.ReadAllLines(TemplFile)
|
|
Dim NewFileContent As New ObservableCollection(Of String)
|
|
If Not WriteFile(NewFileContent) Then Return False
|
|
' costruisco il nome del percorso del file corrente
|
|
Dim CurrConfig As String = m_HardwareGeneral.Path & "\" & CONFIGINI_FILE_NAME
|
|
Dim CurrItemPath As String = CurrPath()
|
|
' salvo il file
|
|
File.WriteAllLines(CurrItemPath, NewFileContent)
|
|
RefreshTemplateListEgtDOORCreator()
|
|
Map.refProjectManagerHardwareVM.IsModified = False
|
|
Return True
|
|
End Function
|
|
|
|
Private Function WriteFile(ByRef NewFileContent As ObservableCollection(Of String)) As Boolean
|
|
For IndexName As Integer = 0 To m_GroupChapterName.Count - 1
|
|
CascadedChapter(m_GroupChapters, m_GroupChapterName(IndexName))
|
|
Next
|
|
Dim TemplFile = m_HardwareGeneral.Path & "\" & m_SelType.Name & ".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
|
|
NewFileContent.Add(FileContent(IndexLine))
|
|
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)
|
|
NewFileContent.RemoveAt(NewFileContent.Count - 1)
|
|
If Not sValue = " nil" Then
|
|
NewFileContent.Add(FileContent(IndexLine))
|
|
End If
|
|
Next
|
|
If IsNothing(NewFileContent) Then Return False
|
|
Return True
|
|
End Function
|
|
|
|
Public 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 bIsActive As Boolean = True
|
|
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
|
|
' verifico che il parametro da stampare sia abilitato alla stampa (altriementi NON scrivere nel file)
|
|
If Not m_GroupChapters(IndexGroupChapters).IsActiveChapter Then sValue = " nil" : Return True
|
|
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 ConstGen.INCHES
|
|
If OptionModule.m_SelectedMeasureUnit = ConstGen.VAL_INCHES Then
|
|
If Text.ToolTipValue.Contains("Invalid") Then
|
|
sValue = "0.0000"
|
|
Else
|
|
sValue = Text.TypeVar & "( " & Text.Value & ")"
|
|
End If
|
|
Else
|
|
sValue = Text.Value
|
|
If MmToInches(sValue) Then sValue = Text.TypeVar & "( " & sValue & ")"
|
|
End If
|
|
Case ConstGen.MM
|
|
If OptionModule.m_SelectedMeasureUnit = ConstGen.VAL_INCHES Then
|
|
sValue = Text.Value
|
|
InchesToMm(sValue)
|
|
Else
|
|
If Text.ToolTipValue.Contains("Invalid") Then
|
|
sValue = "0.0000"
|
|
Else
|
|
sValue = Text.Value
|
|
End If
|
|
End If
|
|
End Select
|
|
' se testo numerico, eseguo opportune conversioni per H,W e T
|
|
sValue = ConvertFromDGD(Text.TypeVar, sValue)
|
|
sValue &= " + " & Text.SelConst
|
|
Return True
|
|
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxThicknessParam Then
|
|
Dim Text As TextBoxThicknessParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxThicknessParam)
|
|
sValue = String.Empty
|
|
If Text.SelConst.dValue = 0 Then
|
|
Select Case Text.TypeVar
|
|
Case ConstGen.INCHES
|
|
If OptionModule.m_SelectedMeasureUnit = ConstGen.VAL_INCHES Then
|
|
If Text.ToolTipValue.Contains("Invalid") Then
|
|
sValue = "0.0000"
|
|
Else
|
|
sValue = Text.TypeVar & "( " & Text.Value & ")"
|
|
End If
|
|
Else
|
|
sValue = Text.Value
|
|
If MmToInches(sValue) Then sValue = Text.TypeVar & "( " & sValue & ")"
|
|
End If
|
|
Case ConstGen.MM
|
|
If OptionModule.m_SelectedMeasureUnit = ConstGen.VAL_INCHES Then
|
|
sValue = Text.Value
|
|
InchesToMm(sValue)
|
|
Else
|
|
If Text.ToolTipValue.Contains("Invalid") Then
|
|
sValue = "0.0000"
|
|
Else
|
|
sValue = Text.Value
|
|
End If
|
|
End If
|
|
End Select
|
|
' se testo numerico, eseguo opportune conversioni per H,W e T
|
|
sValue = ConvertFromDGD(Text.TypeVar, sValue)
|
|
Return True
|
|
End If
|
|
sValue = DoubleToString(Text.SelConst.dValue, 1)
|
|
Return True
|
|
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxNgeParam Then
|
|
Dim Text As TextBoxNgeParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxNgeParam)
|
|
sValue = String.Empty
|
|
sValue = "'" & Text.Value & "'"
|
|
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 ConstGen.INCHES
|
|
If OptionModule.m_SelectedMeasureUnit = ConstGen.VAL_INCHES Then
|
|
If Text.ToolTipValue.Contains("Invalid") Then
|
|
sValue = "0.0000"
|
|
Else
|
|
sValue = Text.TypeVar & "( " & Text.Value & ")"
|
|
End If
|
|
'sValue = Text.TypeVar & "( " & Text.ToolTipValue & ")"
|
|
Else
|
|
sValue = Text.Value
|
|
If MmToInches(sValue) Then sValue = Text.TypeVar & "( " & sValue & ")"
|
|
End If
|
|
Case ConstGen.MM
|
|
If OptionModule.m_SelectedMeasureUnit = ConstGen.VAL_INCHES Then
|
|
sValue = Text.Value
|
|
InchesToMm(sValue)
|
|
Else
|
|
If Text.ToolTipValue.Contains("Invalid") Then
|
|
sValue = "0.0000"
|
|
Else
|
|
sValue = Text.Value
|
|
End If
|
|
'sValue = Text.ToolTipValue
|
|
End If
|
|
Case ConstGen.VAL_DOUBLE
|
|
sValue = Text.Value
|
|
Case ConstGen.VAL_STRING
|
|
sValue = "'" & Text.Value & "'"
|
|
End Select
|
|
' se testo numerico, eseguo opportune conversioni per H,W e T
|
|
sValue = ConvertFromDGD(Text.TypeVar, sValue)
|
|
Return True
|
|
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is TextBoxNgeParam Then
|
|
Dim Text As TextBoxNgeParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), TextBoxNgeParam)
|
|
sValue = "'" & Text.Value & "'"
|
|
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 ComboBoxParamLua Then
|
|
Dim Text As ComboBoxParamLua = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), ComboBoxParamLua)
|
|
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
|
|
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
|
|
ElseIf TypeOf m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter) Is GhostParam Then
|
|
Dim Text As GhostParam = DirectCast(m_GroupChapters(IndexGroupChapters).CompoParamList(IndexChapter), GhostParam)
|
|
sValue = Text.Value
|
|
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.refProjectManagerHardwareVM.IsModified Then Return SaveResult.nNo
|
|
' Do you want to save the current changes?
|
|
Select Case MessageBox.Show(EgtMsg(50177), "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
|
|
Case MessageBoxResult.Yes ' decido di salvare
|
|
Save()
|
|
Return SaveResult.nYes
|
|
Case MessageBoxResult.No ' decido di non salvare
|
|
Map.refProjectManagerHardwareVM.IsModified = False
|
|
Return SaveResult.nNo
|
|
Case Else ' altrimenti interrompi sempre
|
|
Return SaveResult.nCancel
|
|
End Select
|
|
End Function
|
|
|
|
Public Function DeleteHardware() As Boolean
|
|
DeleteGeometry()
|
|
Dim CurrDirPath As String = CurrPath()
|
|
BackupDeletingFile(CurrDirPath)
|
|
For Each ItemFile In m_TemplateList
|
|
If ItemFile = m_SelTemplate Then
|
|
Dim IndexList As Integer = m_TemplateList.IndexOf(m_SelTemplate)
|
|
m_TemplateList.Remove(m_SelTemplate)
|
|
If IndexList > 0 Then
|
|
SelTemplate = m_TemplateList(IndexList - 1)
|
|
ElseIf IndexList = 0 And m_TemplateList.Count > 0 Then
|
|
SelTemplate = m_TemplateList(IndexList)
|
|
Else
|
|
SelTemplate = Nothing
|
|
End If
|
|
Exit For
|
|
End If
|
|
Next
|
|
If File.Exists(CurrDirPath) Then
|
|
Try
|
|
File.Delete(CurrDirPath)
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
RefreshTemplateListEgtDOORCreator()
|
|
NotifyPropertyChanged("TemplateList")
|
|
Return True
|
|
End Function
|
|
|
|
Private Function DeleteGeometry() As Boolean
|
|
Dim sGeometryName As String
|
|
For Each Compo In m_GroupChapters
|
|
For Each Param In Compo.CompoParamList
|
|
If Param.DDFName.Contains(".CGF") And TypeOf Param Is TextBoxNgeParam Then
|
|
Dim Text As TextBoxNgeParam = DirectCast(Param, TextBoxNgeParam)
|
|
If Not IsNothing(Text.Value) Then
|
|
sGeometryName = Path.GetDirectoryName(Me.CurrPath) & "/" & Text.Value
|
|
BackupDeletingFile(sGeometryName)
|
|
If File.Exists(sGeometryName) Then
|
|
Try
|
|
File.Delete(sGeometryName)
|
|
Catch ex As Exception
|
|
End Try
|
|
End If
|
|
End If
|
|
Return True
|
|
End If
|
|
Next
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
' salvo nella cartella di Backup
|
|
Public Function BackupDeletingFile(DeletingFileName As String) As Boolean
|
|
Dim sCurrTime As String = Date.UtcNow.ToString.Replace(" ", "_")
|
|
sCurrTime = sCurrTime.Replace("/", "-")
|
|
sCurrTime = sCurrTime.Replace(":", "-")
|
|
Dim BackupFileName As String = Path.GetFileNameWithoutExtension(DeletingFileName) & " " & sCurrTime
|
|
If Not Directory.Exists(BackupDir) Then
|
|
Directory.CreateDirectory(BackupDir)
|
|
End If
|
|
BackupFileName = BackupDir & "\" & BackupFileName & Path.GetExtension(DeletingFileName)
|
|
' copio il file
|
|
Try
|
|
File.Copy(DeletingFileName, BackupFileName, True)
|
|
Catch ex As System.IO.IOException
|
|
' Error in copying:
|
|
MessageBox.Show(String.Format(EgtMsg(50176), ex.Message))
|
|
' interrompo la copia e la creazione
|
|
Return False
|
|
End Try
|
|
Return True
|
|
End Function
|
|
|
|
#End Region ' Salvataggio, Duplica, Nuovo, Aggiorna
|
|
|
|
Public Function CurrPath() As String
|
|
Dim ModelDir As String = String.Empty
|
|
'If m_SelBrand.ModelDir <> RegexFunction.ModelTemplate(m_HardwareGeneral.Path) Then ModelDir = m_SelBrand.ModelDirGraphic & "\"
|
|
If m_SelBrand.ModelDirGraphic <> RAD_DIR Then ModelDir = m_SelBrand.ModelDirGraphic & "\"
|
|
Return m_HardwareGeneral.Path & "\" & ModelDir & m_SelTemplate & LUA_EXTENSION
|
|
End Function
|
|
|
|
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
|