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 Visibility Friend m_bBevelDown As Visibility 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_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_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 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, "", 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 Dim Weight As String = String.Empty DefaultGetPrivateProfileString(S_SIZE, K_WEIGHT_INI, "", Weight) m_Weight = Weight Dim WeightVisibility As Visibility = Visibility.Collapsed DefaultGetPrivateProfilesVisibility(S_SIZE, K_WEIGHTISCHECKED_INI, WeightVisibility) Door.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) 'For Index = 0 To EdgeTypeList.Count - 1 ' Door.m_EdgeTypeList.Add(New EdgeType(EdgeTypeList(Index), True)) 'Next m_StaticEdgeTypeList = EdgeTypeList OptionsViewModel.CreateEdgeTypeList() ' carico i valori associati agli spigoli Dim LockEdgeType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_LOCKEDGE, "", LockEdgeType) For Index = 0 To OptionsViewModel.EdgeTypeList.Count - 1 If OptionsViewModel.EdgeTypeList(Index).Name = LockEdgeType Then m_LockEdgeType = OptionsViewModel.EdgeTypeList(Index) End If Next Dim HingeEdgeType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_HINGEDGE_INI, "", HingeEdgeType) For Index = 0 To OptionsViewModel.EdgeTypeList.Count - 1 If OptionsViewModel.EdgeTypeList(Index).Name = HingeEdgeType Then m_HingeEdgeType = OptionsViewModel.EdgeTypeList(Index) End If Next Dim TopType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_TOPEDGE_INI, "", TopType) For Index = 0 To OptionsViewModel.EdgeTypeList.Count - 1 If OptionsViewModel.EdgeTypeList(Index).Name = TopType Then m_TopType = OptionsViewModel.EdgeTypeList(Index) End If Next Dim BottomType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_BOTTOMEDGE_INI, "", BottomType) For Index = 0 To OptionsViewModel.EdgeTypeList.Count - 1 If OptionsViewModel.EdgeTypeList(Index).Name = BottomType Then m_BottomType = OptionsViewModel.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) 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