Imports System.Collections.ObjectModel Imports EgtUILib 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 Boolean Friend m_bBevelDown As Boolean Friend Enum LauncherWindow Open_window = 0 Open_last_project = 1 Empty = 2 End Enum Friend m_Width As String Friend m_Height As String Friend m_Thickness As String Friend m_SwingTypeList As New List(Of String) Friend m_Swing As String 'Friend m_EdgeTypeList As New ObservableCollection(Of String) Friend m_LockEdgeType As String Friend m_HingeEdgeType As String Friend m_TopType As String Friend m_BottomType As String 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_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 GetPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir) = 0 Then sMsgDir = IniFile.m_sConfigDir End If ' Leggo file messaggi Dim sMsgName As String = String.Empty GetPrivateProfileString(S_GENERAL, K_MESSAGES, "", sMsgName) Dim sMsgFilePath As String = sMsgDir & "\EgalTechEng.txt" For Each Language In OptionModule.m_LanguageList If Language.Name = sMsgName Then OptionModule.m_SelectedLanguage = Language sMsgFilePath = sMsgDir & "\" & Language.FilePath End If Next If Not EgtLoadMessages(sMsgFilePath) Then EgtOutLog(EgtMsg(50127)) End If ' imposto unità di misura per interfaccia utente m_bIsMmUnit = (GetPrivateProfileInt(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 Dim nOptionLauncher As Integer ' leggo il valore If Not IsNothing(CStr(GetPrivateProfileInt(S_LAUNCHERWINDOW, K_LAUNCHER, 1))) Then nOptionLauncher = GetPrivateProfileInt(S_LAUNCHERWINDOW, K_LAUNCHER, 1) End If ' leggo il direttorio di salvataggio dei progetti Dim sMyProjectDir As String = String.Empty If GetPrivateProfileString(S_DOORS, K_MYPROJECTDIR, "", sMyProjectDir) <> 0 Then IniFile.m_MyProjectDir = sMyProjectDir End If ' leggo il tipo di Bevel selezionato Dim BevelUp As Boolean DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELU_INI, BevelUp) m_bBevelUp = BevelUp Dim BevelDown As Boolean 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, "", Width) m_Width = Width Dim Height As String = String.Empty DefaultGetPrivateProfileString(S_SIZE, K_HEIGHT_INI, "", Height) m_Height = Height Dim Thickness As String = String.Empty DefaultGetPrivateProfileString(S_SIZE, K_THICKNESS_INI, "", 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, "", Swing) m_Swing = Swing ' carico il valori associati al tipo di spigolo Dim EdgeTypeList As New ObservableCollection(Of String) DefaultGetPrivateProfileObservableCollection(S_EDGE, K_EDGETYPE_LIST_INI, EdgeTypeList) Door.m_EdgeTypeList = EdgeTypeList SetEdgeTypeList(Door.m_EdgeTypeList, m_bBevelUp, m_bBevelDown) Dim LockEdgeType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_LOCKEDGE, "", LockEdgeType) m_LockEdgeType = LockEdgeType Dim HingeEdgeType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_HINGEDGE_INI, "", HingeEdgeType) m_HingeEdgeType = HingeEdgeType Dim TopType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_TOPEDGE_INI, "", TopType) m_TopType = TopType Dim BottomType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_BOTTOMEDGE_INI, "", BottomType) m_BottomType = BottomType ' 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) 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 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