Files
EgtDOORCreator/OptionsWindow/OptionModule.vb
T
Nicola Pievani 48b7a8f325 EgtDOORCreator 1.8l3 :
- copia dei file di un progetto nel direttorio della macchina (configurabili nel file da OptionPage);
- salvataggio delle modifiche dei parametri delle componenti già esistenti (RunAs=0);
2017-12-11 16:34:48 +00:00

460 lines
20 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Friend Module OptionModule
' Parametri che contengono lista delle lingue disponibili e lingua selezionata
Friend m_LanguageList As New ObservableCollection(Of Language)
Friend m_SelectedLanguage As Language
Friend m_OptionLauncherList As New List(Of String)
Friend m_SelectedOptionLauncher As String
Friend m_sLastProject As String = String.Empty
' Parametri che contengono lista delle unità di misura disponibili e quella selezionata
Friend m_MeasureUnitList As New List(Of String)({"mm", "Inches"})
Friend m_SelectedMeasureUnit As String
Friend m_bIsMmUnit As Boolean
' Paramaetri per la scelta del bevel
Friend m_bBevelUp As Visibility
Friend m_bBevelDown As Visibility
Friend Enum LauncherWindow As Integer
Open_window = 0
Open_last_project = 1
Empty = 2
End Enum
Friend Enum ConfigType As Integer
Door = 0
Assembly = 1
End Enum
Friend m_Width As String
Friend m_Height As String
Friend m_Thickness As String
Friend m_Weight As String
Friend m_SwingTypeList As New List(Of String)
Friend m_Swing As String
Friend m_StaticEdgeTypeList As New ObservableCollection(Of String)
Friend m_LockEdgeType As New EdgeType("", Visibility.Visible)
Friend m_HingeEdgeType As New EdgeType("", Visibility.Visible)
Friend m_TopType As New EdgeType("", Visibility.Visible)
Friend m_BottomType As New EdgeType("", Visibility.Visible)
Friend m_LockEdgeMachining As Boolean
Friend m_HingeEdgeMachining As Boolean
Friend m_TopMachining As Boolean
Friend m_BottomMachining As Boolean
Friend m_LockEdgeOverMaterial As String
Friend m_HingeEdgeOverMaterial As String
Friend m_TopOverMaterial As String
Friend m_BottomOverMaterial As String
Friend m_SwingTypeListSinlgeDoor As New List(Of String)
Friend m_SwingTypeListLeftDoor As New List(Of String)
Friend m_SwingTypeListRightDoor As New List(Of String)
Friend m_ConfigurationSoftware As ConfigType
Friend m_ThicknessJamb As String
Friend m_WidthJamb As String
Friend m_LightUp As String
Friend m_LightLock As String
Friend m_LightHinge As String
Friend m_LightBottom As String
Friend m_ThicknessHead As String
Friend m_OverlapLock As String
Friend m_OverlapHinge As String
Friend m_Exterior As Boolean
Friend m_OverlapTop As String
Friend m_DeltaThickness As String
Friend m_DoorsListNumber As New List(Of String)
Friend m_DoorsNumber As String
Friend m_TopJambChk As Boolean
Friend m_LeftJambChk As Boolean
Friend m_BottomJambChk As Boolean
Friend m_RightJambChk As Boolean
Friend m_LockEdgeTypeAssembly As New EdgeType("", Visibility.Visible)
Friend m_HingeEdgeTypeAssembly As New EdgeType("", Visibility.Visible)
Friend m_TopTypeAssembly As New EdgeType("", Visibility.Visible)
Friend m_BottomTypeAssembly As New EdgeType("", Visibility.Visible)
Friend m_LockEdgeMachiningAssembly As Boolean
Friend m_HingeEdgeMachiningAssembly As Boolean
Friend m_TopMachiningAssembly As Boolean
Friend m_BottomMachiningAssembly As Boolean
Friend m_LockEdgeOverMaterialAssembly As String
Friend m_HingeEdgeOverMaterialAssembly As String
Friend m_TopOverMaterialAssembly As String
Friend m_BottomOverMaterialAssembly As String
Friend m_CompoPaneOrder As List(Of String) = New List(Of String)
' inizializzazione lettura variabili ad inizio programma
Friend Sub InitOptionModule()
' Leggo elenco lingue disponibili da file ini
Dim nIndex As Integer = 1
Dim ReadLanguage As Language = GetPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex)
While Not IsNothing(ReadLanguage)
m_LanguageList.Add(ReadLanguage)
nIndex += 1
ReadLanguage = GetPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex)
End While
' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
Dim sMsgDir As String = String.Empty
If GetMainPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir) = 0 Then
sMsgDir = IniFile.m_sConfigDir
End If
' Leggo file messaggi
Dim sMsgName As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_MESSAGES, "", sMsgName)
Dim sMsgFilePath As String = sMsgDir & "\EgalTechEng.txt"
For Each Language In OptionModule.m_LanguageList
If Language.Name = sMsgName Then
GuideV.m_Language = sMsgName
OptionModule.m_SelectedLanguage = Language
sMsgFilePath = sMsgDir & "\" & Language.FilePath
End If
Next
If Not EgtLoadMessages(sMsgFilePath) Then
EgtOutLog(EgtMsg(50127))
End If
'i valori della pagina dell'assemblato
Dim Config As Integer = GetMainPrivateProfileInt(S_GENERAL, S_RUNAS, 0)
m_ConfigurationSoftware = If(Config = 0, ConfigType.Door, ConfigType.Assembly)
' imposto unità di misura per interfaccia utente
m_bIsMmUnit = (GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0)
EgtSetUiUnits(m_bIsMmUnit)
If m_bIsMmUnit Then
m_SelectedMeasureUnit = m_MeasureUnitList(0)
Else
m_SelectedMeasureUnit = m_MeasureUnitList(1)
End If
' imposto tipo di avvio
Dim nOptionLauncher As Integer = GetMainPrivateProfileInt(S_LAUNCHERWINDOW, K_LAUNCHER, 0)
' leggo il direttorio di salvataggio dei progetti
Dim sMyProjectDir As String = String.Empty
If GetMainPrivateProfileString(S_DOORS, K_MYPROJECTDIR, "", sMyProjectDir) <> 0 Then
' se non esiste il direttorio
If Not Directory.Exists(sMyProjectDir) Then
' manntego l'accesso a quello di default
EgtOutLog("Warning : " & sMyProjectDir & " does not exist")
' controllo che il direttorio che era stato passato di default esista
If Not Directory.Exists(IniFile.m_MyProjectDir) Then
' creo il direttorio
Directory.CreateDirectory(IniFile.m_MyProjectDir)
End If
Else
IniFile.m_MyProjectDir = sMyProjectDir
End If
End If
Dim sTemplateDir As String = String.Empty
If GetMainPrivateProfileString(S_DOORS, K_TEMPLATEDIR, "", sTemplateDir) <> 0 Then
' se non esiste il direttorio
If Not Directory.Exists(sTemplateDir) Then
' manntego l'accesso a quello di default
EgtOutLog("Warning : " & sTemplateDir & " does not exist")
' controllo che il direttorio che era stato passato di default esista
If Not Directory.Exists(IniFile.m_TemplateDir) Then
' creo il direttorio
Directory.CreateDirectory(IniFile.m_TemplateDir)
End If
Else
IniFile.m_TemplateDir = sTemplateDir
End If
End If
Dim sMachinDir As String = String.Empty
If GetMainPrivateProfileString(S_DOORS, K_MACHINDIR, "", sMachinDir) <> 0 Then
If Not Directory.Exists(sMachinDir) Then
' manntego l'accesso a quello di default
EgtOutLog("Warning : " & sMachinDir & " does not exist")
' controllo che il direttorio che era stato passato di default esista
Else
IniFile.m_MachinProject = sMachinDir
End If
End If
' leggo il tipo di Bevel selezionato
Dim BevelUp As Visibility
DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELU_INI, BevelUp)
m_bBevelUp = BevelUp
Dim BevelDown As Visibility
DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELD_INI, BevelDown)
m_bBevelDown = BevelDown
' Leggo le dimensioni della porta dal file Default.ini
Dim Width As String = String.Empty
DefaultGetPrivateProfileString(S_SIZE, K_WIDTH_INI, "33.125", Width)
m_Width = Width
Dim Height As String = String.Empty
DefaultGetPrivateProfileString(S_SIZE, K_HEIGHT_INI, "88.2656", Height)
m_Height = Height
Dim Thickness As String = String.Empty
DefaultGetPrivateProfileString(S_SIZE, K_THICKNESS_INI, "1.8125", Thickness)
m_Thickness = Thickness
' carico i valori associati allo swing della porta
Dim SwingTypeList As New List(Of String)
DefaultGetPrivateProfileList(S_SIZE, K_SWING_LIST_INI, SwingTypeList)
m_SwingTypeList = SwingTypeList
Dim Swing As String = String.Empty
DefaultGetPrivateProfileString(S_SIZE, K_SWING_INI, "RH", Swing)
m_Swing = Swing
LoadSwingList()
Dim Weight As String = String.Empty
DefaultGetPrivateProfileString(S_SIZE, K_WEIGHT_INI, "25", Weight)
m_Weight = Weight
Dim WeightVisibility As Visibility = Visibility.Collapsed
DefaultGetPrivateProfilesVisibility(S_SIZE, K_WEIGHTISCHECKED_INI, WeightVisibility)
Part.IsCheckedWeight = WeightVisibility
' carico il valori associati al tipo di spigolo
Dim EdgeTypeList As New ObservableCollection(Of String)
DefaultGetPrivateProfileObservableCollection(S_EDGE, K_EDGETYPE_LIST_INI, EdgeTypeList)
m_StaticEdgeTypeList = EdgeTypeList
OptionsVM.CreateEdgeTypeList()
' carico i valori associati agli spigoli
Dim LockEdgeType As String = String.Empty
DefaultGetPrivateProfileString(S_EDGE, K_LOCKEDGE, "", LockEdgeType)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = LockEdgeType Then
m_LockEdgeType = OptionsVM.EdgeTypeList(Index)
End If
Next
Dim HingeEdgeType As String = String.Empty
DefaultGetPrivateProfileString(S_EDGE, K_HINGEDGE_INI, "SQ", HingeEdgeType)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = HingeEdgeType Then
m_HingeEdgeType = OptionsVM.EdgeTypeList(Index)
End If
Next
Dim TopType As String = String.Empty
DefaultGetPrivateProfileString(S_EDGE, K_TOPEDGE_INI, "SQ", TopType)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = TopType Then
m_TopType = OptionsVM.EdgeTypeList(Index)
End If
Next
Dim BottomType As String = String.Empty
DefaultGetPrivateProfileString(S_EDGE, K_BOTTOMEDGE_INI, "SQ", BottomType)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = BottomType Then
m_BottomType = OptionsVM.EdgeTypeList(Index)
End If
Next
' Carico i valori booleani associati alla lavorazione
Dim LockEdgeMachining As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHINING, K_LOCKEDGEISCHECKED_INI, LockEdgeMachining)
m_LockEdgeMachining = LockEdgeMachining
Dim HingeEdgeMachining As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHINING, K_HINGEDGEEISCHECKED_INI, HingeEdgeMachining)
m_HingeEdgeMachining = HingeEdgeMachining
Dim TopMachining As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHINING, K_TOPISCHECKED_INI, TopMachining)
m_TopMachining = TopMachining
Dim BottomMachining As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHINING, K_BOTTOMISCHECKED_INI, BottomMachining)
m_BottomMachining = BottomMachining
' carico i valori di overmaterial
Dim LockEdgeOverMaterial As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIAL, K_LOCKEDGEOVERMATERIAL_INI, "", LockEdgeOverMaterial)
m_LockEdgeOverMaterial = LockEdgeOverMaterial
Dim HingeEdgeOverMaterial As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIAL, K_HINGEDGEOVERMATERIAL_INI, "", HingeEdgeOverMaterial)
m_HingeEdgeOverMaterial = HingeEdgeOverMaterial
Dim TopOverMaterial As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIAL, K_TOPOVERMATERIAL_INI, "", TopOverMaterial)
m_TopOverMaterial = TopOverMaterial
Dim BottomOverMaterial As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIAL, K_BOTTOMOVERMATERIAL_INI, "", BottomOverMaterial)
m_BottomOverMaterial = BottomOverMaterial
' carico l'ordinamento delle componenti
DefaultGetPrivateProfileList(S_COMPOORDER, K_COMPOORDER_INI, DdfFile.CompoListOrder)
' carico l'ordinamento dei bottoni
DefaultGetPrivateProfileList(S_COMPOORDER, K_COMPOORDER_INI, m_CompoPaneOrder)
'-----------------------------------------------------------------------------------------------------------------
Dim ThicknessJamb As String = String.Empty
DefaultGetPrivateProfileString(S_SIZEJAMB, K_THICKNESS, "25", ThicknessJamb)
m_ThicknessJamb = ThicknessJamb
Dim WidthJamb As String = String.Empty
DefaultGetPrivateProfileString(S_SIZEJAMB, K_WIDTH, "25", WidthJamb)
m_WidthJamb = WidthJamb
Dim LightUp As String = String.Empty
DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTUP, "25", LightUp)
m_LightUp = LightUp
Dim LightLock As String = String.Empty
DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTLOCK, "25", LightLock)
m_LightLock = LightLock
Dim LightHinge As String = String.Empty
DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTHINGE, "25", LightHinge)
m_LightHinge = LightHinge
Dim LightBottom As String = String.Empty
DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTBOTTOM, "25", LightBottom)
m_LightBottom = LightBottom
DefaultGetPrivateProfileList(S_DOORSNUMBER, K_DOORSLISTNUMBER, m_DoorsListNumber)
Dim DoorsNumber As String = String.Empty
DefaultGetPrivateProfileString(S_DOORSNUMBER, K_DOORSELECTEDTNUMBER, "0", DoorsNumber)
m_DoorsNumber = DoorsNumber
Dim ThicknessHead As String = String.Empty
DefaultGetPrivateProfileString(S_OVERLAP, K_THICKNESSHEAD, "0", ThicknessHead)
m_ThicknessHead = ThicknessHead
Dim OverlapHinge As String = String.Empty
DefaultGetPrivateProfileString(S_OVERLAP, K_OVERLAPHINGE, "0", OverlapHinge)
m_OverlapHinge = OverlapHinge
Dim OverlapLock As String = String.Empty
DefaultGetPrivateProfileString(S_OVERLAP, K_OVERLAPLOCK, "0", OverlapLock)
m_OverlapLock = OverlapLock
Dim Exterior As Boolean = False
DefaultGetPrivateProfilesMachining(S_OVERLAP, K_EXTERIOR, Exterior)
m_Exterior = Exterior
Dim OverlapTop As String = String.Empty
DefaultGetPrivateProfileString(S_OVERLAP, K_OVERLAPTOP, "0", OverlapTop)
m_OverlapTop = OverlapTop
Dim DeltaT As String = String.Empty
DefaultGetPrivateProfileString(S_OVERLAP, K_DELTAT, "0", DeltaT)
m_DeltaThickness = DeltaT
Dim TopChk As Boolean = False
DefaultGetPrivateProfilesMachining(S_PART, K_TOPJAMB, TopChk)
m_TopJambChk = TopChk
Dim LeftChk As Boolean = False
DefaultGetPrivateProfilesMachining(S_PART, K_LEFTJAMB, LeftChk)
m_LeftJambChk = LeftChk
Dim BottomChk As Boolean = False
DefaultGetPrivateProfilesMachining(S_PART, K_BOTTOMJAMB, BottomChk)
m_BottomJambChk = BottomChk
Dim RightChk As Boolean = False
DefaultGetPrivateProfilesMachining(S_PART, K_RIGHTJAMB, RightChk)
m_RightJambChk = RightChk
Dim LockEdgeTypeAss As String = String.Empty
DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_LOCKEDGE, "", LockEdgeTypeAss)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = LockEdgeTypeAss Then
m_LockEdgeTypeAssembly = OptionsVM.EdgeTypeList(Index)
End If
Next
Dim HingeEdgeTypeAss As String = String.Empty
DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_HINGEDGE_INI, "SQ", HingeEdgeTypeAss)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = HingeEdgeTypeAss Then
m_HingeEdgeTypeAssembly = OptionsVM.EdgeTypeList(Index)
End If
Next
Dim TopTypeAss As String = String.Empty
DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_TOPEDGE_INI, "SQ", TopTypeAss)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = TopTypeAss Then
m_TopTypeAssembly = OptionsVM.EdgeTypeList(Index)
End If
Next
Dim BottomTypeAss As String = String.Empty
DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_BOTTOMEDGE_INI, "SQ", BottomTypeAss)
For Index = 0 To OptionsVM.EdgeTypeList.Count - 1
If OptionsVM.EdgeTypeList(Index).Name = BottomTypeAss Then
m_BottomTypeAssembly = OptionsVM.EdgeTypeList(Index)
End If
Next
' Carico i valori booleani associati alla lavorazione
Dim LockEdgeMachiningAss As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHININGASSEMBLY, K_LOCKEDGEISCHECKED_INI, LockEdgeMachiningAss)
m_LockEdgeMachiningAssembly = LockEdgeMachiningAss
Dim HingeEdgeMachiningAss As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHININGASSEMBLY, K_HINGEDGEEISCHECKED_INI, HingeEdgeMachiningAss)
m_HingeEdgeMachiningAssembly = HingeEdgeMachiningAss
Dim TopMachiningAss As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHININGASSEMBLY, K_TOPISCHECKED_INI, TopMachiningAss)
m_TopMachiningAssembly = TopMachiningAss
Dim BottomMachiningAss As Boolean = False
DefaultGetPrivateProfilesMachining(S_MACHININGASSEMBLY, K_BOTTOMISCHECKED_INI, BottomMachiningAss)
m_BottomMachiningAssembly = BottomMachiningAss
' carico i valori di overmaterial
Dim LockEdgeOverMaterialAss As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_LOCKEDGEOVERMATERIAL_INI, "", LockEdgeOverMaterialAss)
m_LockEdgeOverMaterialAssembly = LockEdgeOverMaterialAss
Dim HingeEdgeOverMaterialAss As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_HINGEDGEOVERMATERIAL_INI, "", HingeEdgeOverMaterialAss)
m_HingeEdgeOverMaterialAssembly = HingeEdgeOverMaterialAss
Dim TopOverMaterialAss As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_TOPOVERMATERIAL_INI, "", TopOverMaterialAss)
m_TopOverMaterialAssembly = TopOverMaterialAss
Dim BottomOverMaterialAss As String = String.Empty
DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_BOTTOMOVERMATERIAL_INI, "", BottomOverMaterialAss)
m_BottomOverMaterialAssembly = BottomOverMaterialAss
m_OptionLauncherList.Add(EgtMsg(50206))
m_OptionLauncherList.Add(EgtMsg(50207))
m_OptionLauncherList.Add(EgtMsg(50208))
' assegno il valore selezioato dalla lista
m_SelectedOptionLauncher = m_OptionLauncherList(nOptionLauncher)
End Sub
Friend Sub SetEdgeTypeList(EdgeTypeList As ObservableCollection(Of String), bBevelUp As Boolean, bBevelDown As Boolean)
If Not bBevelUp Then
EdgeTypeList.Remove("BU")
End If
If Not bBevelDown Then
EdgeTypeList.Remove("BD")
End If
End Sub
Private Sub LoadSwingList()
For Index As Integer = 0 To 3
m_SwingTypeListSinlgeDoor.Add(m_SwingTypeList(Index))
Next
For Index As Integer = 4 To 7
m_SwingTypeListLeftDoor.Add(m_SwingTypeList(Index))
Next
For Index As Integer = 8 To 11
m_SwingTypeListRightDoor.Add(m_SwingTypeList(Index))
Next
End Sub
End Module
' Classe che identifica una lingua del programma con nome e path del file dei messaggi
Public Class Language
Private m_sName As String
Private m_sFilePath As String
Public Property Name As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
End Set
End Property
Public Property FilePath As String
Get
Return m_sFilePath
End Get
Set(value As String)
m_sFilePath = value
End Set
End Property
Sub New(sName As String, sFilePath As String)
Me.Name = sName
Me.FilePath = sFilePath
End Sub
End Class