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 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 List(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 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 List(Of String) DefaultGetPrivateProfileList(S_EDGE, K_EDGETYPE_LIST_INI, EdgeTypeList) m_EdgeTypeList = EdgeTypeList 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 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