Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Imports EgtWPFLib5 Friend Module OptionModule ' flag per modalità di visualizzazione file (solo lettura) Friend ReadOnlyDDF As Boolean = False ' gestione bottoni nella barra SpecialPanel Friend IsActiveSpecialPanel As Boolean = False ' flag per forzare l'aggiornamento delle dimensioni anta dei file DDT Friend AdjustDDT As Boolean = False Friend FileNameFromArgs As String = String.Empty Friend SaveFileNameFromArgs As String = String.Empty ' Forza la scrittura dello swing Left(L..) oppure Right(R..) Friend ForcesSideSwing As String = String.Empty ' Parametri che contengono lista delle lingue disponibili e lingua selezionata Friend m_LanguageList As New ObservableCollection(Of Language) Friend m_SelectedLanguage As Language ' Elenco delle MTable disponibili nella configurazione corrente Friend m_MTableList As New ObservableCollection(Of MTable) Friend m_SelectedMTable As MTable Friend m_CurrentMachine As String = String.Empty Friend m_OptionLauncherList As New List(Of String) Friend m_SelectedOptionLauncher As Integer = 0 Friend m_bLauncherOpenOnce As Boolean = False 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)({ConstGen.MM, ConstGen.VAL_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 ' Parametri per la scelta della versione di stampa ddf Friend m_sVersionDDF As String = "2" Friend m_sSpaceTabCompo As String = "" Friend m_sSpace1Tab As String = ConstCompo.DDF_SPACE3 Friend m_sSpace2Tab As String = ConstCompo.DDF_SPACE5 Friend m_sSpace3Tab As String = ConstCompo.DDF_SPACE5 Friend m_sSpaceHype As String = ConstCompo.DDF_HYPHEN Friend m_DisableInvertBevel As Visibility = Visibility.Collapsed Friend m_DisableAddGeometry As Visibility = Visibility.Collapsed Friend m_DisableArch As Visibility = Visibility.Collapsed Friend m_DeleteProject As Boolean = False Friend m_DisableProperties As Visibility Friend m_MaterialIsVisible As Visibility = Visibility.Visible Friend m_PropertList As New ObservableCollection(Of PropertyItem) Friend m_PropertListJamb As New ObservableCollection(Of PropertyItem) ' lista dei materiali Friend m_MaterialList As New ObservableCollection(Of MaterialType) Friend m_CurrMaterial As MaterialType Friend m_VisibilityBtnDesign As Visibility = Visibility.Collapsed Friend m_EnableBrowse As Boolean = False Friend m_nDispostionScreen As Integer = 0 Friend Enum LauncherOpt As Integer Open_window = 0 Open_last_project = 1 Empty = 2 End Enum Friend Const LoOpenOnce As Integer = 10 Friend Enum ConfigType As Integer Door = 0 Assembly = 1 End Enum Friend m_SmartHelp As HelpPage = HelpPage.WebBrowserVB Friend Enum HelpPage LocalHost WebBrowserVB WebBrowserPC End Enum Friend m_AskMeAgainConfirm As Boolean = False Friend m_DisableHM As Boolean = False Friend m_DisableDeleteCommandHM As Boolean = False Friend m_CompoPanelFrameVisibility As Visibility = Visibility.Visible 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_SwingList As New List(Of SwingItemTypeList) 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_DisableWindowOrder As Boolean Friend m_DisableTemplate As Boolean Friend m_SingleDoor As Boolean Friend m_Disposition As New EdgeType(ConstGen.BEVEL_BYSWING, Visibility.Visible) Friend m_sDisposition As String = ConstGen.BEVEL_BYSWING Friend m_IsMM As Boolean = False 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_OverlapBottom As String Friend m_ThicknessBottom As String Friend m_DepthBottom As String Friend m_DeltaBottom 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_TotalDimension As Boolean Friend m_TotalHeight As String Friend m_TotalWidth As String Friend ColorErrorValue As String = "Red" Friend ColorMissingParameter As String = "Yellow" Friend ColorLoadByDefault As String = "Red" Friend ColorErrorAndMissing As String = "Red" Friend ColorModifyingParamRef As String = "Yellow" Friend ColorDisableChapter As String = "Gray" Friend ColorRefCompo As String = "Gray" Friend ColorNewGeometry As String = "Black" Friend m_CompoPaneOrder As List(Of String) = New List(Of String) Friend m_ExtLineLen As Double Friend m_ArrowLen As Double Friend m_TextDist As Double Friend m_LenIsMM As Integer Friend m_DecDigit As Integer Friend m_Font As String Friend m_TextHeight As Double Friend m_DimensionHardware As Visibility Friend m_DimensionDoor As Visibility ' iniziliazzo il la lettura dei messaggi Friend Sub ReadMessages() ' 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 End Sub ' inizializzazione lettura variabili ad inizio programma Friend Sub InitOptionModule() ' la lettura dei file dei messaggi è stata separata (vedere la classe MainWindowModel) ' i valori della pagina dell'assemblato If (IniFile.m_nKeyOptions And KEY_OPT.JAMBS) <> 0 Then Dim Config As Integer = GetMainPrivateProfileInt(S_GENERAL, K_RUNAS, 0) m_ConfigurationSoftware = If(Config = 0, ConfigType.Door, ConfigType.Assembly) Else ' Package JAMBS is not available m_ConfigurationSoftware = ConfigType.Door End If ' verifico se il programma è in modalità di sola lettura DDF If (IniFile.m_nKeyOptions And KEY_OPT.READ_ONLY) <> 0 Then OptionModule.ReadOnlyDDF = True ElseIf GetMainPrivateProfileInt(S_GENERAL, K_READONLY, 0) <> 0 Then OptionModule.ReadOnlyDDF = True Else OptionModule.ReadOnlyDDF = False End If ' valore indentazione programma Dim sVer As String = String.Empty If GetMainPrivateProfileString(S_GENERAL, K_DDFVERSION, "1", sVer) > 0 Then Dim sItem() As String = sVer.Split(";"c) m_sVersionDDF = sItem(0).Trim End If If m_sVersionDDF = "2" Then m_sSpaceTabCompo = ConstCompo.DDF_SPACE2 m_sSpace1Tab = ConstCompo.DDF_SPACE2 m_sSpace2Tab = ConstCompo.DDF_SPACE4 m_sSpace3Tab = ConstCompo.DDF_SPACE6 m_sSpaceHype = ConstCompo.DDF_HYPHEN_2 End If ' imposto unità di misura per interfaccia utente m_bIsMmUnit = (GetMainPrivateProfileInt(S_SCENE, K_MMUNITS, 1) <> 0) EgtSetUiUnits(m_bIsMmUnit) m_SelectedMeasureUnit = m_MeasureUnitList(If(m_bIsMmUnit, 0, 1)) ' leggo come deve essere visualizzato il programma Dim nDispositionScreen As Integer = GetMainPrivateProfileInt(S_GENERAL, "DispositionScreen", 0) If nDispositionScreen < 0 Or nDispositionScreen > 2 Then m_nDispostionScreen = 0 Else m_nDispostionScreen = nDispositionScreen End If ' imposto tipo di avvio Dim nLauncher As Integer = GetMainPrivateProfileInt(S_LAUNCHERWINDOW, K_LAUNCHER, 0) m_SelectedOptionLauncher = (nLauncher Mod LoOpenOnce) If nLauncher >= LoOpenOnce Then m_bLauncherOpenOnce = True WriteMainPrivateProfileString(S_LAUNCHERWINDOW, K_LAUNCHER, m_SelectedOptionLauncher.ToString()) End If ' leggo il direttorio di salvataggio dei progetti Dim sMyProjectDir As String = String.Empty If GetMainPrivateProfileString(S_DOORS, K_MYPROJECTDIR, "", sMyProjectDir) > 0 AndAlso Directory.Exists(sMyProjectDir) Then IniFile.m_MyProjectDir = sMyProjectDir Else ' mantengo l'accesso a quello di default EgtOutLog("Warning : " & sMyProjectDir & " does not exist") ' se il direttorio di default non esiste, lo creo If Not Directory.Exists(IniFile.m_MyProjectDir) Then Directory.CreateDirectory(IniFile.m_MyProjectDir) End If Dim sTemplateDir As String = String.Empty If GetMainPrivateProfileString(S_DOORS, K_TEMPLATEDIR, "", sTemplateDir) > 0 Then If Not Directory.Exists(sTemplateDir) Then Directory.CreateDirectory(sTemplateDir) IniFile.m_TemplateDir = sTemplateDir Else ' mantego l'accesso a quello di default EgtOutLog(String.Format(EgtMsg(50180), sTemplateDir & " (Directory Template)")) ' se il direttorio di default non esiste, lo creo If Not Directory.Exists(IniFile.m_TemplateDir) Then Directory.CreateDirectory(IniFile.m_TemplateDir) End If Dim sMachinDir As String = String.Empty If GetMainPrivateProfileString(S_DOORS, K_MACHINDIR, "", sMachinDir) > 0 AndAlso Directory.Exists(sMachinDir) Then IniFile.m_MachinProject = sMachinDir Else ' mantengo l'accesso a quello di default EgtOutLog(String.Format(EgtMsg(50180), sMachinDir & " (Directory Machine)")) End If Dim sListLabelDir As String = String.Empty If GetMainPrivateProfileString(S_REPORT, K_REPORTDIR, "", sListLabelDir) > 0 AndAlso Directory.Exists(sListLabelDir) Then IniFile.m_sListLabelDir = sListLabelDir Else ' mantengo l'accesso a quello di default EgtOutLog(String.Format(EgtMsg(50180), sListLabelDir & " (Directory Report)")) End If Dim sListLabelFile As String = String.Empty If GetMainPrivateProfileString(S_REPORT, K_CURRENTREPORT, "", sListLabelFile) > 0 AndAlso File.Exists(sListLabelFile) Then IniFile.m_sListLabelCurrent = sListLabelFile Else ' mantengo l'accesso a quello di default EgtOutLog(String.Format(EgtMsg(50180), sListLabelFile & " (File Report)")) End If Dim sEgtCam5EXE As String = String.Empty ' AndAlso File.Exists(sListLabelFile) If GetMainPrivateProfileString(S_GENERAL, K_EGTCAMEXE, "", sEgtCam5EXE) > 0 Then IniFile.m_sEgtCam5EXEPath = sEgtCam5EXE End If Dim nHelpSelct As Integer = 0 Select Case GetMainPrivateProfileInt(S_GENERAL, K_SMARTHELP, 1) Case 0 m_SmartHelp = HelpPage.WebBrowserVB Case 1 m_SmartHelp = HelpPage.LocalHost Case 2 m_SmartHelp = HelpPage.WebBrowserPC Case Else m_SmartHelp = HelpPage.WebBrowserVB End Select m_DisableWindowOrder = (GetMainPrivateProfileInt(S_GENERAL, "DisableOrder", 0) <> 0) m_DisableTemplate = (GetMainPrivateProfileInt(S_GENERAL, "DisableTemplate", 0) <> 0) m_DisableHM = (GetMainPrivateProfileInt(S_GENERAL, K_DISABLEHM, 1) = 0) m_DisableDeleteCommandHM = (GetMainPrivateProfileInt(S_GENERAL, K_DISABLEDELETECOMMANDHM, 1) = 0) m_DisableProperties = If(GetMainPrivateProfileInt(S_GENERAL, K_DISABLEPROPERTIES, 1) = 0, Visibility.Visible, Visibility.Collapsed) m_DisableAddGeometry = If(GetMainPrivateProfileInt(S_GENERAL, K_DISABLEADDGEOMETRY, 1) = 0, Visibility.Visible, Visibility.Collapsed) m_DisableArch = If(GetMainPrivateProfileInt(S_GENERAL, K_DISABLEARCH, 1) = 0, Visibility.Visible, Visibility.Collapsed) m_SingleDoor = If(GetMainPrivateProfileInt(S_GENERAL, K_SINGLEDOOR, 0) = 1, True, False) m_DeleteProject = If(GetMainPrivateProfileInt(S_GENERAL, K_DELETEPROJECT, 0) = 1, True, False) m_DisableInvertBevel = If(GetMainPrivateProfileInt(S_GENERAL, K_INVERTBEVEL, 1) = 0, Visibility.Visible, Visibility.Collapsed) m_VisibilityBtnDesign = If(GetMainPrivateProfileInt(S_REPORT, K_REPORTDESIGNER, 0) = 1, Visibility.Visible, Visibility.Hidden) m_EnableBrowse = If(GetMainPrivateProfileInt(S_REPORT, K_TEMPLATEBROWSER, 0) = 1, True, False) m_DimensionDoor = If(GetMainPrivateProfileInt(S_REPORT, K_DOORDIMENSION, 0) = 1, Visibility.Visible, Visibility.Collapsed) m_DimensionHardware = If(GetMainPrivateProfileInt(S_REPORT, K_HARDWAREDIMENSION, 0) = 1, Visibility.Visible, Visibility.Collapsed) m_AskMeAgainConfirm = If(GetMainPrivateProfileInt(S_GENERAL, K_ASKMEAGAINCONFIRM, 1) = 1, True, False) ' leggo il tipo di Bevel selezionato DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELU_INI, m_bBevelUp) DefaultGetPrivateProfilesBevel(S_EDGE, K_BEVELD_INI, m_bBevelDown) ' disposizione in macchina delle porte (variabile globale) Select Case GetMainPrivateProfileInt(S_GENERAL, K_DISPOSITION, 0) Case 0 m_Disposition.Name = ConstGen.BEVEL_BYSWING Case 1 m_Disposition.Name = ConstGen.BEVEL_DOWN Case 2 m_Disposition.Name = ConstGen.BEVEL_UP End Select ' questa variabile deve essere usata solo in locale per settare la visibilità della optionpage dei bevel m_sDisposition = m_Disposition.Name ' se esiste una selezione allora non mostrare a video If m_Disposition.Name.Contains(ConstGen.BEVEL_UP) Then m_bBevelUp = Visibility.Visible m_bBevelDown = Visibility.Collapsed ElseIf m_Disposition.Name.Contains(ConstGen.BEVEL_DOWN) Then m_bBevelUp = Visibility.Collapsed m_bBevelDown = Visibility.Visible End If ' carico i nomi dei materiali (NomeDDF/NomeGrafica) e le liste di materiali associate Dim MaterialList As New ObservableCollection(Of String) DefaultGetPrivateProfileObservableCollection("Material", "MaterialList", MaterialList) LoadMaterialList(MaterialList) ' se eiste un solo materiale allora non mostro a vodeo If MaterialList.Count < 2 then m_MaterialIsVisible = Visibility.Collapsed End If Dim PropertyList As New ObservableCollection(Of String) ' se non trovo l'elenco dei materiali allora eseguo le vecchie istruzioni If Not DefaultGetPrivateProfileMaterialProperties(ConstIni.S_PROPERTIES_INI, "Property", m_MaterialList) Then DefaultGetPrivateProfileObservableCollection(ConstIni.S_PROPERTIES_INI, ConstIni.K_PROPRTIESLIST_INI, PropertyList) m_MaterialIsVisible = Visibility.Collapsed ' carico la vecchia lista di proprietà LoadPropertiesList(PropertyList, m_PropertList) ' genero una lista fittizia di materiali MaterialList.Add(GENERICMATERIAL) LoadMaterialList(MaterialList) m_MaterialList(0).PropertiesList = m_PropertList If PropertyList.Count < 1 Then OptionModule.m_DisableProperties = Visibility.Collapsed End If PropertyList.Clear() DefaultGetPrivateProfileObservableCollection(ConstIni.S_PROPERTIES_INI, ConstIni.K_PROPRTIESLISTJAMB_INI, PropertyList) If PropertyList.Count > 0 Then LoadPropertiesList(PropertyList, m_PropertListJamb) End If Part.m_MaterilaList = m_MaterialList m_CurrMaterial = m_MaterialList(0) ' Leggo le dimensioni della porta dal file Default.ini Dim IsMM As Boolean = False DefaultGetMmUnits(ConstCompo.S_GENERALINI, ConstCompo.K_MMUNITSINI, IsMM) m_IsMM = IsMM If GetCurrentMTableList() Then ' abilito la modifica della MTbale solo se Debug superioere a 5 End If Dim Width As String = String.Empty DefaultGetPrivateProfileString(S_SIZE_INI, K_WIDTH_INI, "32", Width) Utility.ConvertCompoConfig(Width, 9999) m_Width = Width Dim dWidth As Double If StringToDouble(m_Width, dWidth) Then EgtLuaSetGlobNumVar("W", dWidth) Dim Height As String = String.Empty DefaultGetPrivateProfileString(S_SIZE_INI, K_HEIGHT_INI, "80", Height) Utility.ConvertCompoConfig(Height, 9999) m_Height = Height Dim dHeight As Double If StringToDouble(m_Height, dHeight) Then EgtLuaSetGlobNumVar("H", dHeight) Dim Thickness As String = String.Empty DefaultGetPrivateProfileString(S_SIZE_INI, K_THICKNESS_INI, "1.75", Thickness) Utility.ConvertCompoConfig(Thickness, 9999) m_Thickness = Thickness Dim dThickness As Double If StringToDouble(m_Thickness, dThickness) Then EgtLuaSetGlobNumVar("T", dThickness) ' carico i valori associati allo swing della porta Dim SwingTypeList As New List(Of String) DefaultGetPrivateProfileList(S_SIZE_INI, K_SWING_LIST_INI, SwingTypeList) LoadSwingTypeList(SwingTypeList) Dim Swing As String = String.Empty DefaultGetPrivateProfileString(S_SIZE_INI, K_SWING_INI, ConstGen.RIGHTHAND, Swing) m_Swing = Swing LoadSwingList() Dim Weight As String = String.Empty DefaultGetPrivateProfileString(S_SIZE_INI, K_WEIGHT_INI, "25", Weight) m_Weight = Weight Dim WeightVisibility As Visibility = Visibility.Collapsed DefaultGetPrivateProfilesVisibility(S_SIZE_INI, K_WEIGHTISCHECKED_INI, WeightVisibility) Part.IsCheckedWeight = WeightVisibility ' carico il valori associati al tipo di spigolo Dim EdgeTypeList As New ObservableCollection(Of String) If DefaultGetPrivateProfileObservableCollection(S_EDGE, K_EDGETYPE_LIST_INI, EdgeTypeList) Then m_StaticEdgeTypeList = EdgeTypeList Else DefaultGetPrivateProfileNewVersion(S_EDGE, K_EDGETYPE_INI, EdgeTypeList, Part.m_LockEdgeTypeList, Part.m_HingeEdgeTypeList, Part.m_TopEdgeTypeList, Part.m_BottomEdgeTypeList) m_StaticEdgeTypeList = EdgeTypeList End If OptionsVM.CreateEdgeTypeList() ' carico i valori associati agli spigoli Dim LockEdgeType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_LOCKEDGE_INI, "", LockEdgeType) For Index = 0 To OptionsVM.LockEdgeTypeList.Count - 1 If OptionsVM.LockEdgeTypeList(Index).Name = LockEdgeType Then m_LockEdgeType = OptionsVM.LockEdgeTypeList(Index) End If Next If String.IsNullOrWhiteSpace(m_LockEdgeType.Name) Then m_LockEdgeType = OptionsVM.LockEdgeTypeList(0) Dim HingeEdgeType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_HINGEDGE_INI, ConstGen.BEVEL_SQUARED, HingeEdgeType) For Index = 0 To OptionsVM.HingeEdgeTypeList.Count - 1 If OptionsVM.HingeEdgeTypeList(Index).Name = HingeEdgeType Then m_HingeEdgeType = OptionsVM.HingeEdgeTypeList(Index) End If Next If String.IsNullOrWhiteSpace(m_HingeEdgeType.Name) Then m_HingeEdgeType = OptionsVM.HingeEdgeTypeList(0) Dim TopType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_TOPEDGE_INI, ConstGen.BEVEL_SQUARED, TopType) For Index = 0 To OptionsVM.TopEdgeTypeList.Count - 1 If OptionsVM.TopEdgeTypeList(Index).Name = TopType Then m_TopType = OptionsVM.TopEdgeTypeList(Index) End If Next If String.IsNullOrWhiteSpace(m_TopType.Name) Then m_TopType = OptionsVM.TopEdgeTypeList(0) Dim BottomType As String = String.Empty DefaultGetPrivateProfileString(S_EDGE, K_BOTTOMEDGE_INI, ConstGen.BEVEL_SQUARED, BottomType) For Index = 0 To OptionsVM.BottomEdgeTypeList.Count - 1 If OptionsVM.BottomEdgeTypeList(Index).Name = BottomType Then m_BottomType = OptionsVM.BottomEdgeTypeList(Index) End If Next If String.IsNullOrWhiteSpace(m_BottomType.Name) Then m_BottomType = OptionsVM.BottomEdgeTypeList(0) ' 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) Utility.ConvertCompoConfig(LockEdgeOverMaterial, 100) m_LockEdgeOverMaterial = LockEdgeOverMaterial Dim HingeEdgeOverMaterial As String = String.Empty DefaultGetPrivateProfileString(S_OVERMATERIAL, K_HINGEDGEOVERMATERIAL_INI, "", HingeEdgeOverMaterial) Utility.ConvertCompoConfig(HingeEdgeOverMaterial, 100) m_HingeEdgeOverMaterial = HingeEdgeOverMaterial Dim TopOverMaterial As String = String.Empty DefaultGetPrivateProfileString(S_OVERMATERIAL, K_TOPOVERMATERIAL_INI, "", TopOverMaterial) Utility.ConvertCompoConfig(TopOverMaterial, 100) m_TopOverMaterial = TopOverMaterial Dim BottomOverMaterial As String = String.Empty DefaultGetPrivateProfileString(S_OVERMATERIAL, K_BOTTOMOVERMATERIAL_INI, "", BottomOverMaterial) Utility.ConvertCompoConfig(BottomOverMaterial, 100) m_BottomOverMaterial = BottomOverMaterial ' carico l'ordinamento delle componenti DefaultGetPrivateProfileList(S_COMPOORDER, K_COMPOORDER_INI, DdfFile.CompoListOrder) ' carico l'ordinamento dei bottoni DefaultGetPrivateProfileList(S_COMPOOPANELORDER_INI, K_COMPOORDER_INI, m_CompoPaneOrder) '----------------------------------------------------------------------------------------------------------------- 'carico i colori da associare agli errori Dim sColor As String = String.Empty Dim ColorConvert As SolidColorBrush DefaultGetPrivateProfileString("Error", "ErrorValue", "Red", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorErrorValue = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "MissingParameter", "Purple", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorMissingParameter = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "MissingFile", "Red", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorLoadByDefault = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "ErrorValueAndMissing", "Red", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorErrorAndMissing = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "ModifyingParamRef", "Orange", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorModifyingParamRef = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "DisableChapter", "Gray", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorDisableChapter = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "RefCompo", "Gray", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorRefCompo = sColor Catch ex As Exception End Try End If DefaultGetPrivateProfileString("Error", "NewGeometry", "Balck", sColor) If Not String.IsNullOrEmpty(sColor) Then Try ColorConvert = DirectCast(New BrushConverter().ConvertFrom(sColor), SolidColorBrush) ColorNewGeometry = sColor Catch ex As Exception End Try End If '----------------------------------------------------------------------------------------------------------------- ' SIZE JAMB Dim ThicknessHead As String = String.Empty DefaultGetPrivateProfileString(S_SIZEJAMB, K_THICKNESSHEAD, "0", ThicknessHead) Utility.ConvertCompoConfig(ThicknessHead, 100) m_ThicknessHead = ThicknessHead Dim ThicknessJamb As String = String.Empty DefaultGetPrivateProfileString(S_SIZEJAMB, K_THICKNESS, "25", ThicknessJamb) Utility.ConvertCompoConfig(ThicknessJamb, 100) m_ThicknessJamb = ThicknessJamb Dim WidthJamb As String = String.Empty DefaultGetPrivateProfileString(S_SIZEJAMB, K_WIDTH, "25", WidthJamb) Utility.ConvertCompoConfig(WidthJamb, 100) m_WidthJamb = WidthJamb ' LIGHT Dim LightUp As String = String.Empty DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTUP, "25", LightUp) Utility.ConvertCompoConfig(LightUp, 100) m_LightUp = LightUp Dim LightLock As String = String.Empty DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTLOCK, "25", LightLock) Utility.ConvertCompoConfig(LightLock, 100) m_LightLock = LightLock Dim LightHinge As String = String.Empty DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTHINGE, "25", LightHinge) Utility.ConvertCompoConfig(LightHinge, 100) m_LightHinge = LightHinge Dim LightBottom As String = String.Empty DefaultGetPrivateProfileString(S_LIGHT, K_LIGHTBOTTOM, "25", LightBottom) Utility.ConvertCompoConfig(LightBottom, 100) 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 ' OVERLAP Dim OverlapHinge As String = String.Empty DefaultGetPrivateProfileString(S_OVERLAP, K_OVERLAPHINGE, "0", OverlapHinge) Utility.ConvertCompoConfig(OverlapHinge, 100) m_OverlapHinge = OverlapHinge Dim OverlapLock As String = String.Empty DefaultGetPrivateProfileString(S_OVERLAP, K_OVERLAPLOCK, "0", OverlapLock) Utility.ConvertCompoConfig(OverlapLock, 100) m_OverlapLock = OverlapLock Dim OverlapTop As String = String.Empty DefaultGetPrivateProfileString(S_OVERLAP, K_OVERLAPTOP, "0", OverlapTop) Utility.ConvertCompoConfig(OverlapTop, 100) m_OverlapTop = OverlapTop Dim DeltaT As String = String.Empty DefaultGetPrivateProfileString(S_OVERLAP, K_DELTAT, "0", DeltaT) Utility.ConvertCompoConfig(DeltaT, 100) m_DeltaThickness = DeltaT ' THRESHOLD Dim Exterior As Boolean = False DefaultGetPrivateProfilesMachining(S_THRESHOLD, K_EXTERIOR, Exterior) m_Exterior = Exterior Dim OverlapBottom As String = String.Empty DefaultGetPrivateProfileString(S_THRESHOLD, K_OVERLAPBOTTOM, "0", OverlapBottom) Utility.ConvertCompoConfig(OverlapBottom, 100) m_OverlapBottom = OverlapBottom Dim ThicknessBottom As String = String.Empty DefaultGetPrivateProfileString(S_THRESHOLD, K_THICKNESSBOTTOM, "0", ThicknessBottom) Utility.ConvertCompoConfig(ThicknessBottom, 100) m_ThicknessBottom = ThicknessBottom Dim DepthBottom As String = String.Empty DefaultGetPrivateProfileString(S_THRESHOLD, K_DEPTHBOTTOM, "0", DepthBottom) Utility.ConvertCompoConfig(DepthBottom, 100) m_DepthBottom = DepthBottom Dim DeltaBottom As String = String.Empty DefaultGetPrivateProfileString(S_THRESHOLD, K_DELTABOTTOM, "0", DeltaBottom) Utility.ConvertCompoConfig(DeltaBottom, 100) m_DeltaBottom = DeltaBottom '-------------------------------------------------------------------------------- Dim TotalDim As Boolean = False DefaultGetPrivateProfilesMachining(S_TOTALDIMENSION, K_STATIC, TotalDim) m_TotalDimension = TotalDim Dim TotalH As String = String.Empty DefaultGetPrivateProfileString(S_TOTALDIMENSION, K_TOTALHEIGHT, "82", TotalH) Utility.ConvertCompoConfig(TotalH, 100) m_TotalHeight = TotalH Dim TotalW As String = String.Empty DefaultGetPrivateProfileString(S_TOTALDIMENSION, K_TOTALWIDTH, "38", TotalW) Utility.ConvertCompoConfig(TotalW, 100) m_TotalWidth = TotalW 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, ConstGen.BEVEL_SQUARED, LockEdgeTypeAss) For Index = 0 To OptionsVM.FrameEdgeTypeList.Count - 1 If OptionsVM.FrameEdgeTypeList(Index).Name = LockEdgeTypeAss Then m_LockEdgeTypeAssembly = OptionsVM.FrameEdgeTypeList(Index) End If Next Dim HingeEdgeTypeAss As String = String.Empty DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_HINGEDGE_INI, ConstGen.BEVEL_SQUARED, HingeEdgeTypeAss) For Index = 0 To OptionsVM.FrameEdgeTypeList.Count - 1 If OptionsVM.FrameEdgeTypeList(Index).Name = HingeEdgeTypeAss Then m_HingeEdgeTypeAssembly = OptionsVM.FrameEdgeTypeList(Index) End If Next Dim TopTypeAss As String = String.Empty DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_TOPEDGE_INI, ConstGen.BEVEL_SQUARED, TopTypeAss) For Index = 0 To OptionsVM.FrameEdgeTypeList.Count - 1 If OptionsVM.FrameEdgeTypeList(Index).Name = TopTypeAss Then m_TopTypeAssembly = OptionsVM.FrameEdgeTypeList(Index) End If Next Dim BottomTypeAss As String = String.Empty DefaultGetPrivateProfileString(S_EDGEASSEMBLY, K_BOTTOMEDGE_INI, ConstGen.BEVEL_SQUARED, BottomTypeAss) For Index = 0 To OptionsVM.FrameEdgeTypeList.Count - 1 If OptionsVM.FrameEdgeTypeList(Index).Name = BottomTypeAss Then m_BottomTypeAssembly = OptionsVM.FrameEdgeTypeList(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, "0", LockEdgeOverMaterialAss) Utility.ConvertCompoConfig(LockEdgeOverMaterialAss, 100) m_LockEdgeOverMaterialAssembly = LockEdgeOverMaterialAss Dim HingeEdgeOverMaterialAss As String = String.Empty DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_HINGEDGEOVERMATERIAL_INI, "0", HingeEdgeOverMaterialAss) Utility.ConvertCompoConfig(HingeEdgeOverMaterialAss, 100) m_HingeEdgeOverMaterialAssembly = HingeEdgeOverMaterialAss Dim TopOverMaterialAss As String = String.Empty DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_TOPOVERMATERIAL_INI, "0", TopOverMaterialAss) Utility.ConvertCompoConfig(TopOverMaterialAss, 100) m_TopOverMaterialAssembly = TopOverMaterialAss Dim BottomOverMaterialAss As String = String.Empty DefaultGetPrivateProfileString(S_OVERMATERIALASSEMBLY, K_BOTTOMOVERMATERIAL_INI, "0", BottomOverMaterialAss) Utility.ConvertCompoConfig(BottomOverMaterialAss, 100) m_BottomOverMaterialAssembly = BottomOverMaterialAss ' Visualizzazione SpecialPanel Dim btDummy As ButtonItem = Nothing IsActiveSpecialPanel = GetMainPrivateProfileInt(S_SPECIAL, K_SPECIALENABLE, 0) <> 0 AndAlso GetPrivateProfileButton(S_SPECIAL, K_BUTTON & "1", "", btDummy) ' Lista messaggi per launcher m_OptionLauncherList.Add(EgtMsg(50206)) 'Open Window m_OptionLauncherList.Add(EgtMsg(50207)) 'Last Project m_OptionLauncherList.Add(EgtMsg(50208)) 'Empty End Sub Friend sub LoadMaterialList (ByVal List As ObservableCollection(Of string)) If IsNothing(List) then Return For Each Material In List Dim Item As String() = Material.Split("/"c) If Item.Count < 2 then m_MaterialList.Add(New MaterialType(Item(0),Item(0))) else m_MaterialList.Add(New MaterialType(Item(0),Item(1))) End If Next End Sub Friend Sub LoadPropertiesList(List As ObservableCollection(Of String), ByRef ListToBeLoaded As ObservableCollection(Of PropertyItem)) If List.Count = 0 Then m_DisableProperties = Visibility.Collapsed Return End If For Each Item In List If Item.Contains("-") Then Dim ItemSlpit() As String = Item.Split("-"c) If ItemSlpit(1).Contains("1") Then Dim SubItemSplit() As String = ItemSlpit(0).Split("/"c) If SubItemSplit.Count > 1 Then ListToBeLoaded.Add(New PropertyItem(SubItemSplit(0), SubItemSplit(1), True)) Else ListToBeLoaded.Add(New PropertyItem(SubItemSplit(0), SubItemSplit(0), True)) End If Else Dim SubItemSplit() As String = ItemSlpit(0).Split("/"c) If SubItemSplit.Count > 1 Then ListToBeLoaded.Add(New PropertyItem(SubItemSplit(0), SubItemSplit(1), False)) Else ListToBeLoaded.Add(New PropertyItem(SubItemSplit(0), SubItemSplit(0), False)) End If End If Else Dim SubItemSplit() As String = Item.Split("/"c) If SubItemSplit.Count > 1 Then ListToBeLoaded.Add(New PropertyItem(SubItemSplit(0), SubItemSplit(1), False)) Else ListToBeLoaded.Add(New PropertyItem(SubItemSplit(0), SubItemSplit(0), False)) End If End If Next Dim bNoneExists As Boolean = false For Each Item in ListToBeLoaded If Item.Name = NONE_DDF then bNoneExists = true Exit for End If Next If Not bNoneExists then ListToBeLoaded.Add(New PropertyItem(NONE_DDF, EgtMsg(50703), False)) End If End Sub 'Friend Sub CreateNewPropertiesList(ByRef List As ObservableCollection(Of PropertyItem), ByRef SelectedMaterial As MaterialType) ' If OptionModule.m_DisableProperties <> Visibility.Visible Then Return ' If OptionModule.m_MaterialList.Count > 1 Then ' SelectedMaterial = OptionModule.m_MaterialList(0) ' List = OptionModule.m_MaterialList(0).PropertiesList ' Return ' End If ' ' configurazione senza materiali ' If List.Count > 0 Then List.Clear() ' For Each Item In OptionModule.m_PropertList ' List.Add(New PropertyItem(Item.Name, Item.GraphicName, Item.IsChecked)) ' Next 'End Sub 'Friend Sub CreateNewPropertiesListJamb(ByRef List As ObservableCollection(Of PropertyItem), ByRef SelectedMaterial As MaterialType) ' If OptionModule.m_DisableProperties <> Visibility.Visible Then Return ' If OptionModule.m_MaterialList.Count > 1 Then ' SelectedMaterial = OptionModule.m_MaterialList(0) ' List = OptionModule.m_MaterialList(0).PropertiesList ' Return ' End If ' ' configurazione senza materiali ' If List.Count > 0 Then List.Clear() ' For Each Item In OptionModule.m_PropertList ' List.Add(New PropertyItem(Item.Name, Item.GraphicName, Item.IsChecked)) ' Next 'End Sub Friend Sub CreateNewPropertiesList(ByRef LocalPart As Part) If OptionModule.m_DisableProperties <> Visibility.Visible Then Return If OptionModule.m_MaterialList.Count > 0 Then ' assegno la proprietà di materiale If Not IsNothing(LocalPart.SelectedMaterial) Then LocalPart.SetMaterial(LocalPart.SelectedMaterial) Else LocalPart.SetMaterial(OptionModule.m_MaterialList(0)) End If LocalPart.SetPropertiesList(OptionModule.m_MaterialList(0).PropertiesList) Return End If ' configurazione senza materiali If LocalPart.PropertiesList.Count > 0 Then LocalPart.PropertiesList.Clear() For Each Item In OptionModule.m_PropertList LocalPart.PropertiesList.Add(New PropertyItem(Item.Name, Item.GraphicName, Item.IsChecked)) Next End Sub Friend Sub CreateNewPropertiesListJamb(ByRef LocalPart As Part) If OptionModule.m_DisableProperties <> Visibility.Visible Then Return If OptionModule.m_MaterialList.Count > 0 Then LocalPart.SetMaterial(OptionModule.m_MaterialList(0)) LocalPart.SetPropertiesList(OptionModule.m_MaterialList(0).PropertiesList) Return End If ' configurazione senza materiali If LocalPart.PropertiesList.Count > 0 Then LocalPart.PropertiesList.Clear() For Each Item In OptionModule.m_PropertList LocalPart.PropertiesList.Add(New PropertyItem(Item.Name, Item.GraphicName, Item.IsChecked)) Next End Sub Friend Sub SetEdgeTypeList(EdgeTypeList As ObservableCollection(Of String), bBevelUp As Boolean, bBevelDown As Boolean) If Not bBevelUp Then EdgeTypeList.Remove(ConstGen.BEVEL_UP) End If If Not bBevelDown Then EdgeTypeList.Remove(ConstGen.BEVEL_DOWN) End If End Sub Private Sub LoadSwingTypeList(ByRef List As List(Of String)) If List.Count = 0 Then Return For Each ItemSwing In List Dim Vis As Visibility = Visibility.Visible If ItemSwing.Contains("-"c) Then Dim ItemSwingVisibility() As String = ItemSwing.Split("-"c) ItemSwing = ItemSwingVisibility(0) If ItemSwingVisibility(1) = "0" Then Vis = Visibility.Collapsed End If If ItemSwing.Contains("/"c) Then Dim ItemAlias() As String = ItemSwing.Split("/"c) Dim Swing As New SwingItemTypeList(ItemAlias(0)) Swing.VisibilityName = Vis For IndexItem As Integer = 1 To ItemAlias.Count - 1 Swing.AliasList.Add(ItemAlias(IndexItem)) Next m_SwingList.Add(Swing) Else Dim Swing As New SwingItemTypeList(ItemSwing) Swing.VisibilityName = Vis m_SwingList.Add(Swing) End If Next End Sub ' carico le liste che devono essere rappresentate a video Private Sub LoadSwingList() For Index As Integer = 0 To 3 If Not m_SwingList(Index).VisibilityName = Visibility.Visible Then Continue For ' carico gli swing della porta singola da mostrare a video If m_SwingList(Index).AliasList.Count = 0 Then m_SwingTypeListSinlgeDoor.Add(m_SwingList(Index).Name) m_SwingTypeList.Add(m_SwingList(Index).Name) Else For Each Item In m_SwingList(Index).AliasList m_SwingTypeListSinlgeDoor.Add(Item) m_SwingTypeList.Add(Item) Next End If Next For Index As Integer = 4 To 7 If Not m_SwingList(Index).VisibilityName = Visibility.Visible Then Continue For ' carico gli swing della prima anta If m_SwingList(Index).AliasList.Count = 0 Then m_SwingTypeListLeftDoor.Add(m_SwingList(Index).Name) m_SwingTypeList.Add(m_SwingList(Index).Name) Else For Each Item In m_SwingList(Index).AliasList m_SwingTypeListLeftDoor.Add(Item) m_SwingTypeList.Add(Item) Next End If Next For Index As Integer = 8 To 11 If Not m_SwingList(Index).VisibilityName = Visibility.Visible Then Continue For ' carico gli swing della seconda anta If m_SwingList(Index).AliasList.Count = 0 Then m_SwingTypeListRightDoor.Add(m_SwingList(Index).Name) m_SwingTypeList.Add(m_SwingList(Index).Name) Else For Each Item In m_SwingList(Index).AliasList m_SwingTypeListRightDoor.Add(Item) m_SwingTypeList.Add(Item) Next End If Next End Sub Public Sub SetCurrSwing(ByRef SwingAlias As SwingItemTypeList, ByRef SwingDDF As String) SwingAlias = Nothing ' controllo che lo swing letto da ddf appartenga alla lista degli swing visibili ( solo su porta Singola) If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then For Each ItemSwing In OptionModule.m_SwingList If Trim(SwingDDF) = Trim(ItemSwing.Name) And Not ItemSwing.VisibilityName = Visibility.Visible Then If SwingDDF.Contains("HR") Then SwingDDF = Trim(SwingDDF) SwingDDF = SwingDDF.Substring(0, 1) & "HR" Else SwingDDF = Trim(SwingDDF) SwingDDF = SwingDDF.Substring(0, 2) End If Exit For End If Next End If For Each Item In OptionModule.m_SwingList If Trim(SwingDDF) = Trim(Item.Name) Then SwingAlias = Item If Item.AliasList.Count > 0 Then SwingAlias = Item If Item.AliasList.Count > 0 Then SwingAlias.AliasName = Item.AliasList(0) Swing = Item.AliasList(0) End If Else SwingAlias.AliasName = Item.Name End If Exit For End If Next ' se arrivo fni qui significa che sicuramente deve esistere un alias If IsNothing(SwingAlias) Then For Each ItemSwingList In OptionModule.m_SwingList For Each ItemAlias In ItemSwingList.AliasList If Trim(SwingDDF) = Trim(ItemAlias) Then SwingAlias = ItemSwingList SwingAlias.AliasName = ItemAlias Exit For End If Next Next End If End Sub Public Function DispositionVisibility() As Visibility ' se non è selezionata nessuna disposizione allora deve essere selezionabile da interfaccia If IsNothing(m_Disposition) Then Return Visibility.Visible ElseIf m_Disposition.Name <> ConstGen.BEVEL_UP And m_Disposition.Name <> ConstGen.BEVEL_DOWN Then Return Visibility.Visible Else Return Visibility.Collapsed End If End Function Public Function DispositionBoolean() As Boolean ' per rendere selezionabile la disposizione dalla pagina delle opzioni If IsNothing(m_sDisposition) Then Return True ElseIf m_sDisposition <> ConstGen.BEVEL_UP And m_sDisposition <> ConstGen.BEVEL_DOWN Then Return True Else Return False End If End Function Public Function GetCurrentMTableList() As Boolean If String.IsNullOrEmpty(IniFile.m_sDoorsDirPath) Then Return False m_MTableList.Clear() Dim sMTableDir As String = IniFile.m_sDoorsDirPath & "\MTables" If Not Directory.Exists(sMTableDir) Then EgtOutLog("Directory " & "'" & sMTableDir & "'" & " not found.") Return False End If Dim Items As String() = Directory.GetFiles(sMTableDir) ' recupero i file che hanno estemsione *.mtl e non sono esclusi Dim ExcludeList As List(Of String) = GetExludeList() For Each MTableFile As String In Items If MTableFile.EndsWith(".mtl") Then Dim sName As String = Path.GetFileNameWithoutExtension(MTableFile).ToLower Dim sPath As String = MTableFile Dim bIsValid As Boolean = True For Each ExcludedItem As String In ExcludeList If sName.ToLower.Contains(ExcludedItem) Then bIsValid = False Exit For End If Next If bIsValid Then sName = Path.GetFileNameWithoutExtension(MTableFile) Dim LocalMTable As New MTable(sName.Trim, sPath.Trim) m_MTableList.Add(LocalMTable) End If End If Next If m_MTableList.Count < 1 Then EgtOutLog("Not valid file in directory " & "'" & sMTableDir & "'" & ".") Return False End If ' leggo il nome della MTable attiva Dim sSelectedMTable As String = String.Empty Dim bSelected As Boolean = False If GetMainPrivateProfileString(S_DOORS, K_MTABLE, "", sSelectedMTable) <> 0 Then For Each ItemFile As MTable In m_MTableList If ItemFile.FilePath.ToLower = sSelectedMTable.Trim.ToLower Then m_SelectedMTable = ItemFile bSelected = True Exit For End If Next End If If Not bSelected Then m_SelectedMTable = m_MTableList(0) Return True End Function Private Function GetExludeList() As List(Of String) Dim LocalList As New List(Of String) Dim sVal As String = String.Empty GetMainPrivateProfileString(S_DOORS, "Exclude", "", sVal) If Not String.IsNullOrWhiteSpace( sVal) Then Dim sItems As String() = sVal.Split(","c) For Each Item As String In sItems LocalList.Add(Item.Trim) Next End If Return LocalList End Function Public Sub GetCurrentMachineInMTable() ' aggiorno il file Config.ini dell'EgtCAM5 EgtLuaExecFile(IniFile.m_sConfigDir & "\ChangeConfig.lua") ' assegno variabili Dim sDir As String = IniFile.m_sDoorsDirPath.Replace("\", "/") EgtLuaSetGlobStringVar("CCD.NewBaseDir", sDir) EgtLuaSetGlobStringVar("CCD.NewMTable", m_SelectedMTable.Name) ' eseguo la funzione che esegue la scrittura delle variabili EgtLuaCallFunction("CCD.GetCurrentMachineInMTable") Dim sVal As String = "" EgtLuaGetGlobStringVar("CCD.NewMachineName", sVal) OptionModule.m_CurrentMachine = sVal EgtLuaResetGlobVar("CCD") 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 Public Class MTable 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