Imports System.Drawing.Text Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Imports System.Globalization Public Class OptionWindowVM Inherits VMBase Public ReadOnly Property LanguageList As ObservableCollection(Of Language) Get Return OptionModule.m_LanguageList End Get End Property Private m_GeomTypeList As ObservableCollection(Of SceneSelModeOpt) = New ObservableCollection(Of SceneSelModeOpt)({SceneSelModeOpt.PARTCURVES, SceneSelModeOpt.PARTSURFACES, SceneSelModeOpt.PARTCURVESANDSURFACES}) Public ReadOnly Property GeomTypeList As ObservableCollection(Of SceneSelModeOpt) Get Return m_GeomTypeList End Get End Property Private m_VMillTypeList As ObservableCollection(Of VMillSelTypeOpt) = New ObservableCollection(Of VMillSelTypeOpt)({VMillSelTypeOpt.LOWER, VMillSelTypeOpt.LOW, VMillSelTypeOpt.STANDARD, VMillSelTypeOpt.HIGH, VMillSelTypeOpt.HIGHER}) Public ReadOnly Property VMillTypeList As ObservableCollection(Of VMillSelTypeOpt) Get Return m_VMillTypeList End Get End Property Private m_UnitMeasureList As List(Of String) = New List(Of String)({"mm", "inch", EgtMsg(MSG_OPTIONPAGE + 45)}) Public ReadOnly Property UnitMeasureList As List(Of String) Get Return m_UnitMeasureList End Get End Property Private m_SceneSurfQualityOptList As ObservableCollection(Of SceneSurfQualityOpt) = New ObservableCollection(Of SceneSurfQualityOpt)({SceneSurfQualityOpt.LOWER, SceneSurfQualityOpt.LOW, SceneSurfQualityOpt.STANDARD, SceneSurfQualityOpt.HIGH, SceneSurfQualityOpt.HIGHER}) Public ReadOnly Property SceneSurfQualityOptList As ObservableCollection(Of SceneSurfQualityOpt) Get Return m_SceneSurfQualityOptList End Get End Property Private m_FontList As New ObservableCollection(Of String) Public ReadOnly Property FontList As ObservableCollection(Of String) Get Dim sNfeDir As String = String.Empty GetPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir) Dim EgtFontList As String() = Directory.GetFiles(sNfeDir) For i = 0 To EgtFontList.Count - 1 m_FontList.Add(Path.GetFileName(EgtFontList(i))) Next Dim fonts As New InstalledFontCollection For i = 0 To fonts.Families.Count - 1 m_FontList.Add(fonts.Families(i).Name) Next Return m_FontList End Get End Property Private m_ScaleDXFList As List(Of String) = New List(Of String)({"mm", "inch", EgtMsg(MSG_OPTIONPAGE + 46)}) Public ReadOnly Property ScaleDXFList As List(Of String) Get Return m_ScaleDXFList End Get End Property Private m_ScaleSTLList As List(Of String) = New List(Of String)({"mm", "inch", EgtMsg(MSG_OPTIONPAGE + 46)}) Public ReadOnly Property ScaleSTLList As List(Of String) Get Return m_ScaleSTLList End Get End Property Private m_ScaleOffList As List(Of String) = New List(Of String)({"mm", "inch", EgtMsg(MSG_OPTIONPAGE + 46)}) Public ReadOnly Property ScaleOffList As List(Of String) Get Return m_ScaleOffList End Get End Property Private m_ScalePlyList As List(Of String) = New List(Of String)({"mm", "inch", EgtMsg(MSG_OPTIONPAGE + 46)}) Public ReadOnly Property ScalePlyList As List(Of String) Get Return m_ScalePlyList End Get End Property Private m_ScaleImageList As List(Of String) = New List(Of String)({"mm", "inch", EgtMsg(MSG_OPTIONPAGE + 46)}) Public ReadOnly Property ScaleImageList As List(Of String) Get Return m_ScaleImageList End Get End Property Public Property SelectedLanguage As Language Get Return OptionModule.m_SelectedLanguage End Get Set(value As Language) If value IsNot OptionModule.m_SelectedLanguage Then OptionModule.m_SelectedLanguage = value WritePrivateProfileString(S_GENERAL, K_MESSAGES, m_SelectedLanguage.Name) End If End Set End Property Public Property SelectedSceneSurfQualityOpt As SceneSurfQualityOpt Get Return OptionModule.m_ShowSurfQuality End Get Set(value As SceneSurfQualityOpt) If WritePrivateProfileString(S_SCENE, K_SHOWSURFQUALITY, CInt(value).ToString()) Then OptionModule.m_ShowSurfQuality = value OptionModule.SetShowSurfQuality( true) End If End Set End Property Public Property SelectedMillingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomMilling End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMMILLING, CInt(value).ToString()) Then OptionModule.m_SelGeomMilling = value End If End Set End Property Public Property SelectedDrillingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomDrilling End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMDRILLING, CInt(value).ToString()) Then OptionModule.m_SelGeomDrilling = value End If End Set End Property Public Property SelectedSawingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomSawing End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMSAWING, CInt(value).ToString()) Then OptionModule.m_SelGeomSawing = value End If End Set End Property Public Property SelectedPocketingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomPocketing End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMPOCKETING, CInt(value).ToString()) Then OptionModule.m_SelGeomPocketing = value End If End Set End Property Public Property SelectedMortisingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomMortising End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMMORTISING, CInt(value).ToString()) Then OptionModule.m_SelGeomMortising = value End If End Set End Property Public Property SelectedChiselingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomChiseling End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMCHISELING, CInt(value).ToString()) Then OptionModule.m_SelGeomChiseling = value End If End Set End Property Public Property SelectedGenGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomGenMachining End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMGENMACHINING, CInt(value).ToString()) Then OptionModule.m_SelGeomGenMachining = value End If End Set End Property Public Property SelectedSurfRoughGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomSurfRoughing End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMSURFROUGHING, CInt(value).ToString()) Then OptionModule.m_SelGeomSurfRoughing = value End If End Set End Property Public Property SelectedSurfFinishGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomSurfFinishing End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMSURFFINISHING, CInt(value).ToString()) Then OptionModule.m_SelGeomSurfFinishing = value End If End Set End Property 'Public Property SelectedWaterJetGeomType As SceneSelModeOpt ' Get ' Return OptionModule.m_SelGeomWaterJetting ' End Get ' Set(value As SceneSelModeOpt) ' If WritePrivateProfileString(S_MACH, K_SELGEOMWATERJETTING, CInt(value).ToString()) Then ' OptionModule.m_SelGeomWaterJetting = value ' End If ' End Set 'End Property Public Property SelectedFiveAxGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomFiveAxMilling End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMFIVEAXMILLING, CInt(value).ToString()) Then OptionModule.m_SelGeomFiveAxMilling = value End If End Set End Property Public Property SelectedProbingGeomType As SceneSelModeOpt Get Return OptionModule.m_SelGeomProbing End Get Set(value As SceneSelModeOpt) If WritePrivateProfileString(S_MACH, K_SELGEOMPROBING, CInt(value).ToString()) Then OptionModule.m_SelGeomProbing = value End If End Set End Property Public Property SelectedVMillQualityType As VMillSelTypeOpt Get Return OptionModule.m_VMillQuality End Get Set(value As VMillSelTypeOpt) If WritePrivateProfileString(S_MACH, K_VMILLQUALITY, CInt(value).ToString()) Then OptionModule.m_VMillQuality = value End If End Set End Property Public Property GeometryTolerance As String Get Return LenToString(OptionModule.m_dGeometryTolerance, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dGeometryTolerance = dVal Map.refProjectVM.GetController.SetSurfTmTolerance(OptionModule.m_dGeometryTolerance) WritePrivateProfileString(S_GEOMDB, K_SURFTMTOLER, DoubleToString(OptionModule.m_dGeometryTolerance, 5)) End If End Set End Property Public Property NewMachiningIsLastOne As Boolean Get Return OptionModule.m_bNewMachiningIsLastOne End Get Set(value As Boolean) OptionModule.m_bNewMachiningIsLastOne = value WritePrivateProfileString(S_OPTIONS, K_NEWMACHININGISLASTONE, If(value, "1", "0")) End Set End Property Public Property UseDispositionScript As Boolean Get Return OptionModule.m_bUseDispositionScript End Get Set(value As Boolean) OptionModule.m_bUseDispositionScript = value WritePrivateProfileString(S_OPTIONS, K_USEDISPOSITIONSCRIPT, If(value, "1", "0")) End Set End Property Public ReadOnly Property TopSceneBackground As Brush Get Return New SolidColorBrush(Color.FromArgb(CByte(255), CByte(OptionModule.m_TopSceneBackground.R), CByte(OptionModule.m_TopSceneBackground.G), CByte(OptionModule.m_TopSceneBackground.B))) End Get End Property Public ReadOnly Property BotSceneBackground As Brush Get Return New SolidColorBrush(Color.FromArgb(CByte(255), CByte(OptionModule.m_BotSceneBackground.R), CByte(OptionModule.m_BotSceneBackground.G), CByte(OptionModule.m_BotSceneBackground.B))) End Get End Property Public ReadOnly Property GridColor As Brush Get Return New SolidColorBrush(Color.FromArgb(CByte(255), CByte(OptionModule.m_GridColor.R), CByte(OptionModule.m_GridColor.G), CByte(OptionModule.m_GridColor.B))) End Get End Property Public ReadOnly Property DefMaterialColor As Brush Get Return New SolidColorBrush(Color.FromArgb(CByte(255), CByte(OptionModule.m_DefMaterialColor.R), CByte(OptionModule.m_DefMaterialColor.G), CByte(OptionModule.m_DefMaterialColor.B))) End Get End Property Public Property ThickLine As Boolean Get Return OptionModule.m_bThickLine End Get Set(value As Boolean) OptionModule.m_bThickLine = value Dim nThickLine As Integer = OptionModule.GetLineWidth() WritePrivateProfileString(S_SCENE, K_LINEWIDTH, nThickLine.ToString()) EgtSetLineAttribs(nThickLine) EgtDraw() End Set End Property Public Property SelectedTextFont As String Get Return m_FontList(m_FontList.IndexOf(OptionModule.m_sFontText)) End Get Set(value As String) OptionModule.m_sFontText = value EgtSetFont("", OptionModule.m_sFontText) WritePrivateProfileString(S_GEOMDB, K_DEFAULTFONT, OptionModule.m_sFontText) End Set End Property Public Property ShowZmapSurf As Boolean Get Return (( OptionModule.m_nShowZmapType And 1) <> 0) End Get Set(value As Boolean) If value Then OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType Or 1) Else OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType And Not 1) End If WritePrivateProfileString(S_SCENE, K_SHOWZMAP, OptionModule.m_nShowZmapType.ToString()) EgtSetShowZmap( OptionModule.m_nShowZmapType, True) End Set End Property Public Property ShowZmapLines As Boolean Get Return (( OptionModule.m_nShowZmapType And 2) <> 0) End Get Set(value As Boolean) If value Then OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType Or 2) Else OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType And Not 2) End If WritePrivateProfileString(S_SCENE, K_SHOWZMAP, OptionModule.m_nShowZmapType.ToString()) EgtSetShowZmap( OptionModule.m_nShowZmapType, True) End Set End Property Public Property ShowZmapNormals As Boolean Get Return (( OptionModule.m_nShowZmapType And 4) <> 0) End Get Set(value As Boolean) If value Then OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType Or 4) Else OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType And Not 4) End If WritePrivateProfileString(S_SCENE, K_SHOWZMAP, OptionModule.m_nShowZmapType.ToString()) EgtSetShowZmap( OptionModule.m_nShowZmapType, True) End Set End Property Public Property ShowZmapBiColor As Boolean Get Return (( OptionModule.m_nShowZmapType And 8) <> 0) End Get Set(value As Boolean) If value Then OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType Or 8) Else OptionModule.m_nShowZmapType = ( OptionModule.m_nShowZmapType And Not 8) End If WritePrivateProfileString(S_SCENE, K_SHOWZMAP, OptionModule.m_nShowZmapType.ToString()) EgtSetShowZmap( OptionModule.m_nShowZmapType, True) End Set End Property Public Property DxfScaleFactor As String Get Return LenToString(OptionModule.m_dDxfScaleFactor, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dDxfScaleFactor = dVal WritePrivateProfileString(S_IMPORT, K_DXFSCALE, DoubleToString(OptionModule.m_dDxfScaleFactor, 5)) Map.refProjectVM.GetController().SetScaleForDxfImport(OptionModule.m_dDxfScaleFactor) NotifyPropertyChanged("DxfScaleFactor") End If End Set End Property Public Property StlScaleFactor As String Get Return LenToString(OptionModule.m_dStlScaleFactor, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dStlScaleFactor = dVal WritePrivateProfileString(S_IMPORT, K_STLSCALE, DoubleToString(OptionModule.m_dStlScaleFactor, 5)) Map.refProjectVM.GetController().SetScaleForStlImport(OptionModule.m_dStlScaleFactor) NotifyPropertyChanged("StlScaleFactor") End If End Set End Property Public Property OffScaleFactor As String Get Return LenToString(OptionModule.m_dOffScaleFactor, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dOffScaleFactor = dVal WritePrivateProfileString(S_IMPORT, K_OFFSCALE, DoubleToString(OptionModule.m_dOffScaleFactor, 5)) Map.refProjectVM.GetController().SetScaleForOffImport(OptionModule.m_dOffScaleFactor) NotifyPropertyChanged("OffScaleFactor") End If End Set End Property Public Property PlyScaleFactor As String Get Return LenToString(OptionModule.m_dPlyScaleFactor, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dPlyScaleFactor = dVal WritePrivateProfileString(S_IMPORT, K_PLYSCALE, DoubleToString(OptionModule.m_dPlyScaleFactor, 5)) Map.refProjectVM.GetController().SetScaleForPLyImport(OptionModule.m_dPlyScaleFactor) NotifyPropertyChanged("PlyScaleFactor") End If End Set End Property Public Property ImageScaleFactor As String Get Return LenToString(OptionModule.m_dImgScaleFactor, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dImgScaleFactor = dVal WritePrivateProfileString(S_IMPORT, K_IMGSCALE, DoubleToString(OptionModule.m_dImgScaleFactor, 5)) Map.refProjectVM.GetController().SetScaleForImageImport(OptionModule.m_dImgScaleFactor) NotifyPropertyChanged("ImageScaleFactor") End If End Set End Property Public Property AdvImpTolerance As String Get Return LenToString(OptionModule.m_dAdvImpTolerance, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dAdvImpTolerance = dVal Map.refProjectVM.GetController.SetAdvImpTolerance(OptionModule.m_dAdvImpTolerance) WritePrivateProfileString(S_IMPORT, K_ADVTOLER, DoubleToString(OptionModule.m_dAdvImpTolerance, 5)) End If End Set End Property Public Property ImageWidth As String Get Return OptionModule.m_nImgWidth.ToString() End Get Set(value As String) Dim nVal As Integer = 0 If Integer.TryParse(value, nVal) AndAlso nVal > 0 Then OptionModule.m_nImgWidth = nVal WritePrivateProfileString(S_EXPORT, K_IMGWIDTH, OptionModule.m_nImgWidth.ToString()) Map.refProjectVM.GetController().SetDefaultForImageExport(OptionModule.m_nImgWidth, OptionModule.m_nImgHeight) End If End Set End Property Public Property ImageHeight As String Get Return OptionModule.m_nImgHeight.ToString() End Get Set(value As String) Dim nVal As Integer = 0 If Integer.TryParse(value, nVal) AndAlso nVal > 0 Then OptionModule.m_nImgHeight = nVal WritePrivateProfileString(S_EXPORT, K_IMGHEIGHT, OptionModule.m_nImgHeight.ToString()) Map.refProjectVM.GetController().SetDefaultForImageExport(OptionModule.m_nImgWidth, OptionModule.m_nImgHeight) End If End Set End Property Public Property ExtLineLen As String Get Return LenToString(OptionModule.m_dExtLineLen, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dExtLineLen = dVal EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_EXTLINELEN, DoubleToString(OptionModule.m_dExtLineLen, 5)) End If End Set End Property Public Property ArrowLen As String Get Return LenToString(OptionModule.m_dArrowLen, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dArrowLen = dVal EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_ARROWLEN, DoubleToString(OptionModule.m_dArrowLen, 5)) End If End Set End Property Public Property TextDist As String Get Return LenToString(OptionModule.m_dTextDist, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dTextDist = dVal EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_TEXTDIST, DoubleToString(OptionModule.m_dTextDist, 5)) End If End Set End Property Public Property SelectedUnitMeasure As String Get If OptionModule.m_nLenIsMM = 0 Then Return "inch" ElseIf OptionModule.m_nLenIsMM = 1 Then Return "mm" Else Return EgtMsg(MSG_OPTIONPAGE + 45) End If End Get Set(value As String) Dim nVal As Integer = 2 If value = "inch" Then nVal = 0 ElseIf value = "mm" Then nVal = 1 End If OptionModule.m_nLenIsMM = nVal EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_LENISMM, OptionModule.m_nLenIsMM.ToString()) End Set End Property Public Property DecDigit As String Get Return OptionModule.m_nDecDigit.ToString() End Get Set(value As String) Dim nVal As Integer = 0 If Integer.TryParse(value, nVal) Then OptionModule.m_nDecDigit = nVal EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_DECDIGIT, OptionModule.m_nDecDigit.ToString()) End If End Set End Property Public Property SelectedFont As String Get Return m_FontList(m_FontList.IndexOf(OptionModule.m_sFont)) End Get Set(value As String) OptionModule.m_sFont = value EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_DIMFONT, OptionModule.m_sFont) End Set End Property Public Property TextHeight As String Get Return LenToString(OptionModule.m_dTextHeight, 5) End Get Set(value As String) Dim dVal As Double = 0 If StringToLen(value, dVal) AndAlso dVal > 0 Then OptionModule.m_dTextHeight = dVal EgtSetCurrDimensionStyle(m_dExtLineLen, m_dArrowLen, m_dTextDist, m_nLenIsMM, m_nDecDigit, m_sFont, m_dTextHeight) WritePrivateProfileString(S_DIMENSIONSTYLE, K_TEXTHEIGHT, DoubleToString(OptionModule.m_dTextHeight, 5)) End If End Set End Property Private m_DXFScaleEnable As Boolean = False Public Property DXFScaleEnable As Boolean Get Return m_DXFScaleEnable End Get Set(value As Boolean) m_DXFScaleEnable = value NotifyPropertyChanged("DXFScaleEnable") End Set End Property Private m_STLScaleEnable As Boolean = False Public Property STLScaleEnable As Boolean Get Return m_STLScaleEnable End Get Set(value As Boolean) m_STLScaleEnable = value NotifyPropertyChanged("STLScaleEnable") End Set End Property Private m_OffScaleEnable As Boolean = False Public Property OffScaleEnable As Boolean Get Return m_OffScaleEnable End Get Set(value As Boolean) m_OffScaleEnable = value NotifyPropertyChanged("OffScaleEnable") End Set End Property Private m_PlyScaleEnable As Boolean = False Public Property PlyScaleEnable As Boolean Get Return m_PlyScaleEnable End Get Set(value As Boolean) m_PlyScaleEnable = value NotifyPropertyChanged("PlyScaleEnable") End Set End Property Private m_ImageScaleEnable As Boolean = False Public Property ImageScaleEnable As Boolean Get Return m_ImageScaleEnable End Get Set(value As Boolean) m_ImageScaleEnable = value NotifyPropertyChanged("ImageScaleEnable") End Set End Property Public Property SelectedDXFScale As String Get If Math.Abs(OptionModule.m_dDxfScaleFactor - ONEMM) < EPS_SMALL * 10 Then Return ScaleDXFList(ScaleDXFList.IndexOf("mm")) ElseIf Math.Abs(OptionModule.m_dDxfScaleFactor - ONEINCH) < EPS_SMALL * 10 Then Return ScaleDXFList(ScaleDXFList.IndexOf("inch")) Else DXFScaleEnable = True Return ScaleDXFList(ScaleDXFList.IndexOf(EgtMsg(MSG_OPTIONPAGE + 46))) End If End Get Set(value As String) If value = "mm" Then DxfScaleFactor = LenToString(ONEMM, 3) DXFScaleEnable = False ElseIf value = "inch" Then DxfScaleFactor = LenToString(ONEINCH, 4) DXFScaleEnable = False Else DXFScaleEnable = True DxfScaleFactor = LenToString(OptionModule.m_dDxfScaleFactor, 4) End If End Set End Property Public Property SelectedSTLScale As String Get If Math.Abs(OptionModule.m_dStlScaleFactor - ONEMM) < EPS_SMALL * 10 Then Return ScaleSTLList(ScaleSTLList.IndexOf("mm")) ElseIf Math.Abs(OptionModule.m_dStlScaleFactor - ONEINCH) < EPS_SMALL * 10 Then Return ScaleSTLList(ScaleSTLList.IndexOf("inch")) Else STLScaleEnable = True Return ScaleSTLList(ScaleSTLList.IndexOf(EgtMsg(MSG_OPTIONPAGE + 46))) End If End Get Set(value As String) If value = "mm" Then StlScaleFactor = LenToString(ONEMM, 3) STLScaleEnable = False ElseIf value = "inch" Then StlScaleFactor = LenToString(ONEINCH, 4) STLScaleEnable = False Else StlScaleFactor = LenToString(OptionModule.m_dStlScaleFactor, 4) STLScaleEnable = True End If End Set End Property Public Property SelectedOffScale As String Get If Math.Abs(OptionModule.m_dOffScaleFactor - ONEMM) < EPS_SMALL * 10 Then Return ScaleOffList(ScaleOffList.IndexOf("mm")) ElseIf Math.Abs(OptionModule.m_dOffScaleFactor - ONEINCH) < EPS_SMALL * 10 Then Return ScaleOffList(ScaleOffList.IndexOf("inch")) Else OffScaleEnable = True Return ScaleOffList(ScaleOffList.IndexOf(EgtMsg(MSG_OPTIONPAGE + 46))) End If End Get Set(value As String) If value = "mm" Then OffScaleFactor = LenToString(ONEMM, 3) OffScaleEnable = False ElseIf value = "inch" Then OffScaleFactor = LenToString(ONEINCH, 4) OffScaleEnable = False Else OffScaleFactor = LenToString(OptionModule.m_dOffScaleFactor, 4) OffScaleEnable = True End If End Set End Property Public Property SelectedPlyScale As String Get If Math.Abs(OptionModule.m_dPlyScaleFactor - ONEMM) < EPS_SMALL * 10 Then Return ScalePlyList(ScalePlyList.IndexOf("mm")) ElseIf Math.Abs(OptionModule.m_dPlyScaleFactor - ONEINCH) < EPS_SMALL * 10 Then Return ScalePlyList(ScalePlyList.IndexOf("inch")) Else PlyScaleEnable = True Return ScalePlyList(ScalePlyList.IndexOf(EgtMsg(MSG_OPTIONPAGE + 46))) End If End Get Set(value As String) If value = "mm" Then PlyScaleFactor = LenToString(ONEMM, 3) PlyScaleEnable = False ElseIf value = "inch" Then PlyScaleFactor = LenToString(ONEINCH, 4) PLyScaleEnable = False Else PLyScaleFactor = LenToString(OptionModule.m_dPlyScaleFactor, 4) PLyScaleEnable = True End If End Set End Property Public Property SelectedImageScale As String Get If Math.Abs(OptionModule.m_dImgScaleFactor - ONEMM) < EPS_SMALL * 10 Then Return ScaleImageList(ScaleImageList.IndexOf("mm")) ElseIf Math.Abs(OptionModule.m_dImgScaleFactor - ONEINCH) < EPS_SMALL * 10 Then Return ScaleImageList(ScaleImageList.IndexOf("inch")) Else ImageScaleEnable = True Return ScaleImageList(ScaleImageList.IndexOf(EgtMsg(MSG_OPTIONPAGE + 46))) ImageScaleEnable = True End If End Get Set(value As String) If value = "mm" Then ImageScaleFactor = LenToString(ONEMM, 3) ImageScaleEnable = False ElseIf value = "inch" Then ImageScaleFactor = LenToString(ONEINCH, 4) ImageScaleEnable = False Else ImageScaleFactor = LenToString(OptionModule.m_dImgScaleFactor, 4) ImageScaleEnable = True End If End Set End Property Public Property SpecialOn As Boolean Get Return OptionModule.m_bSpecialOn End Get Set(value As Boolean) OptionModule.m_bSpecialOn = value WritePrivateProfileString(S_SPECIAL, K_SPECIALENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property BeamEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.BEAM) <> 0 End Get End Property Public ReadOnly Property BeamActive As Boolean Get Return IniFile.IsActiveBeam() End Get End Property Public Property BeamOn As Boolean Get Return BeamEnabled AndAlso OptionModule.m_bBeamOn End Get Set(value As Boolean) OptionModule.m_bBeamOn = value WritePrivateProfileString(S_BEAM, K_BEAMENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property WallEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.WALL) <> 0 End Get End Property Public ReadOnly Property WallActive As Boolean Get Return IniFile.IsActiveWall() End Get End Property Public Property WallOn As Boolean Get Return WallEnabled AndAlso OptionModule.m_bWallOn End Get Set(value As Boolean) OptionModule.m_bWallOn = value WritePrivateProfileString(S_WALL, K_WALLENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property DoorsEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.DOORS) <> 0 End Get End Property Public ReadOnly Property DoorsActive As Boolean Get Return IniFile.IsActiveDoors() End Get End Property Public Property DoorsOn As Boolean Get Return DoorsEnabled AndAlso OptionModule.m_bDoorsOn End Get Set(value As Boolean) OptionModule.m_bDoorsOn = value WritePrivateProfileString(S_DOORS, K_DDFENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property WindowEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.WINDOW) <> 0 End Get End Property Public Property WindowOn As Boolean Get Return OptionModule.m_bWindowOn End Get Set(value As Boolean) OptionModule.m_bWindowOn = value WritePrivateProfileString(S_WINDOW, K_WINDOWENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property TrimmingEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.TRIMMING) <> 0 End Get End Property Public Property TrimmingOn As Boolean Get Return OptionModule.m_bTrimmingOn End Get Set(value As Boolean) OptionModule.m_bTrimmingOn = value WritePrivateProfileString(S_TRIMMING, K_TRIMMINGENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property ReversePostEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.REVERSEPOST) <> 0 End Get End Property Public Property ReversePostOn As Boolean Get Return OptionModule.m_bReversePostOn End Get Set(value As Boolean) OptionModule.m_bReversePostOn = value WritePrivateProfileString(S_REVERSEPOST, K_REVERSEPOSTENABLE, If(value, "1", "0")) End Set End Property Public ReadOnly Property GunstockEnabled As Boolean Get Return (IniFile.m_nKeyOptions And KEY_OPT.GUNSTOCK) <> 0 End Get End Property Public Property GunstockOn As Boolean Get Return OptionModule.m_bGunstockOn End Get Set(value As Boolean) OptionModule.m_bGunstockOn = value WritePrivateProfileString(S_GUNSTOCK, K_GUNSTOCKENABLE, If(value, "1", "0")) End Set End Property ' Definizione comandi Private m_cmdCloseOptions As ICommand Private m_cmdTopSceneBackground As ICommand Private m_cmdBotSceneBackground As ICommand Private m_cmdGridColor As ICommand Private m_cmdUpdateLicenceCmd As ICommand Private m_cmdDefMaterialColor As ICommand Private m_cmdAddMachineCmd As ICommand Private m_cmdExportMachineCmd As ICommand Private m_cmdUpdateBeamCmd As ICommand Private m_cmdUpdateWallCmd As ICommand Private m_cmdUpdateDoorsCmd As ICommand #Region "Messages" Public ReadOnly Property Title As String Get Return EgtMsg(MSG_MAINWINDOW + 5) End Get End Property Public ReadOnly Property GenericMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 14) End Get End Property Public ReadOnly Property CurrentLanguageMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 1) End Get End Property Public ReadOnly Property LanguageAdvertMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 2) End Get End Property Public ReadOnly Property TopSceneBackgroundMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 10) End Get End Property Public ReadOnly Property BotSceneBackgroundMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 11) End Get End Property Public ReadOnly Property GridColorMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 17) End Get End Property Public ReadOnly Property ThickLineMsg As String Get Return EgtMsg(6536) ' Linee spesse End Get End Property Public ReadOnly Property SceneSurfQualityMsg As String Get Return EgtMsg(6518) ' Qualità visualizzazione superfici End Get End Property Public ReadOnly Property UpdateLicenceMsg As String Get Return EgtMsg(6553) ' Aggiorna licenza End Get End Property Public ReadOnly Property CADMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 15) End Get End Property Public ReadOnly Property GeometryToleranceMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 13) End Get End Property Public ReadOnly Property DefMaterialColorMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 12) End Get End Property Public ReadOnly Property DimensionMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 44) ' Quotatura End Get End Property Public ReadOnly Property ExtLineLenMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 37) ' Estensione linea End Get End Property Public ReadOnly Property ArrowLenMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 38) ' Dimensione freccia End Get End Property Public ReadOnly Property TextDistMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 39) ' Distanza messaggio End Get End Property Public ReadOnly Property LenIsMMMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 40) ' Unità di misura End Get End Property Public ReadOnly Property DecDigitMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 41) ' Numero dicmali End Get End Property Public ReadOnly Property FontMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 42) ' Caretteri End Get End Property Public ReadOnly Property TextHeightMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 43) ' Dimensione testo End Get End Property Public ReadOnly Property ImportMsg As String Get Return EgtMsg(6519) ' Import End Get End Property Public ReadOnly Property DxfScaleFactorMsg As String Get Return EgtMsg(6520) ' DXF End Get End Property Public ReadOnly Property StlScaleFactorMsg As String Get Return EgtMsg(6521) ' STL End Get End Property Public ReadOnly Property OffScaleFactorMsg As String Get Return EgtMsg(6561) ' OFF End Get End Property Public ReadOnly Property PlyScaleFactorMsg As String Get Return EgtMsg(6563) ' PLY End Get End Property Public ReadOnly Property ImageScaleFactorMsg As String Get Return EgtMsg(6522) ' Immagini End Get End Property Public ReadOnly Property AdvImpToleranceMsg As String Get Return EgtMsg(6562) ' Tolleranza di importazione End Get End Property Public ReadOnly Property ExportMsg As String Get Return EgtMsg(6523) ' Export End Get End Property Public ReadOnly Property UnitScaleMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 47) ' Unità di scala End Get End Property Public ReadOnly Property FactorScaleMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 48) ' Fattore di scala End Get End Property Public ReadOnly Property ImageMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 24) End Get End Property Public ReadOnly Property ImageWidthMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 25) End Get End Property Public ReadOnly Property ImageHeightMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 26) End Get End Property Public ReadOnly Property CAMMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 16) End Get End Property Public ReadOnly Property MachiningSelGeomMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 6) End Get End Property Public ReadOnly Property GeomTypeMillingMsg As String Get Return EgtMsg(MSG_MACHININGSDBPAGE + 3) End Get End Property Public ReadOnly Property GeomTypeDrillingMsg As String Get Return EgtMsg(MSG_MACHININGSDBPAGE + 1) End Get End Property Public ReadOnly Property GeomTypeSawingMsg As String Get Return EgtMsg(MSG_MACHININGSDBPAGE + 2) End Get End Property Public ReadOnly Property GeomTypePocketingMsg As String Get Return EgtMsg(MSG_MACHININGSDBPAGE + 4) End Get End Property Public ReadOnly Property GeomTypeMortisingMsg As String Get Return EgtMsg(MSG_MACHININGSDBPAGE + 5) End Get End Property Public ReadOnly Property GeomTypeChiselingMsg As String Get Return EgtMsg(MSG_MACHININGSDBPAGE + 9) End Get End Property Public ReadOnly Property NewMachiningPosMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 7) End Get End Property Public ReadOnly Property UseDispositionScriptMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 8) End Get End Property Public ReadOnly Property AddMachineMsg As String Get Return EgtMsg(MSG_OPTIONPAGE + 27) ' Aggiungi macchina End Get End Property Public ReadOnly Property ExportMachineMsg As String Get Return EgtMsg(6549) ' Esporta macchina End Get End Property Public ReadOnly Property ExtraMsg As String Get Return "Extra" End Get End Property Public ReadOnly Property SpecialMsg As String Get Return "Special" End Get End Property Public ReadOnly Property BeamMsg As String Get Return "Beam" End Get End Property Public ReadOnly Property WallMsg As String Get Return "Wall" End Get End Property Public ReadOnly Property DoorsMsg As String Get Return "Doors (" & Path.GetFileName( IniFile.m_sDoorsDirPath) & ")" End Get End Property Public ReadOnly Property WindowMsg As String Get Return "Window" End Get End Property Public ReadOnly Property TrimmingMsg As String Get Return "Trimming" End Get End Property Public ReadOnly Property ReversePostMsg As String Get Return "ReversePost" End Get End Property Public ReadOnly Property GunstockMsg As String Get Return "Gunstock" End Get End Property Public ReadOnly Property UpdateMsg As String Get Return EgtMsg(6554) ' Aggiorna End Get End Property Public ReadOnly Property GeomTypeGenMsg As String Get Return EgtMsg(6208) End Get End Property Public ReadOnly Property GeomTypeSurFinishMsg As String Get Return EgtMsg(6211) End Get End Property Public ReadOnly Property GeomTypeWaterJetMsg As String Get Return EgtMsg(6212) End Get End Property Public ReadOnly Property GeomTypeFiveAxMsg As String Get Return EgtMsg(31213) End Get End Property Public ReadOnly Property GeomTypeSurRoughMsg As String Get Return EgtMsg(31212) End Get End Property Public ReadOnly Property GeomTypeProbingMsg As String Get Return EgtMsg(31220) End Get End Property Public ReadOnly Property VMillQualityMsg As String Get Return EgtMsg(31214) End Get End Property #End Region #Region "Visibility" Public ReadOnly Property ShowZmapVisibility As Visibility Get Return If( (IniFile.m_nUserLevel > 5), Visibility.Visible, Visibility.Collapsed) End Get End Property #End Region #Region "COMMANDS" #Region "TopSceneBackground" ''' ''' Returns a command that remove the current selected machining. ''' Public ReadOnly Property TopSceneBackground_Command() As ICommand Get If m_cmdTopSceneBackground Is Nothing Then m_cmdTopSceneBackground = New RelayCommand(AddressOf TopSceneBackgroundCmd) End If Return m_cmdTopSceneBackground End Get End Property ''' ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. ''' Public Sub TopSceneBackgroundCmd() ' Recupero colore da Ini Dim BackTopColor As New Color3d(192, 192, 192) GetPrivateProfileColor(S_SCENE, K_BACKTOP, BackTopColor) ' Eseguo modifica con dialogo If SelectColor(BackTopColor, BackTopColor) Then OptionModule.m_TopSceneBackground = BackTopColor Map.refProjectVM.GetScene.SetViewBackground(OptionModule.m_TopSceneBackground, OptionModule.m_BotSceneBackground) WritePrivateProfileColor(S_SCENE, K_BACKTOP, OptionModule.m_TopSceneBackground) NotifyPropertyChanged("TopSceneBackground") End If End Sub #End Region ' TopSceneBackground #Region "BotSceneBackground" ''' ''' Returns a command that remove the current selected machining. ''' Public ReadOnly Property BotSceneBackground_Command() As ICommand Get If m_cmdBotSceneBackground Is Nothing Then m_cmdBotSceneBackground = New RelayCommand(AddressOf BotSceneBackgroundCmd) End If Return m_cmdBotSceneBackground End Get End Property ''' ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. ''' Public Sub BotSceneBackgroundCmd() ' Recupero colore da Ini Dim BackBotColor As New Color3d(192, 192, 192) GetPrivateProfileColor(S_SCENE, K_BACKBOTTOM, BackBotColor) ' Eseguo modifica con dialogo If SelectColor(BackBotColor, BackBotColor) Then OptionModule.m_BotSceneBackground = BackBotColor Map.refProjectVM.GetScene.SetViewBackground(OptionModule.m_TopSceneBackground, OptionModule.m_BotSceneBackground) WritePrivateProfileColor(S_SCENE, K_BACKBOTTOM, OptionModule.m_BotSceneBackground) NotifyPropertyChanged("BotSceneBackground") End If End Sub #End Region ' BotSceneBackground #Region "GridColor" ''' ''' Returns a command that remove the current selected machining. ''' Public ReadOnly Property GridColor_Command() As ICommand Get If m_cmdGridColor Is Nothing Then m_cmdGridColor = New RelayCommand(AddressOf GridColorCmd) End If Return m_cmdGridColor End Get End Property ''' ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. ''' Public Sub GridColorCmd() ' Recupero colore da Ini Dim GridColor As New Color3d(192, 192, 192) GetPrivateProfileColor(S_GRID, K_MINLNCOLOR, GridColor) ' Eseguo modifica con dialogo If SelectColor(GridColor, GridColor) Then OptionModule.m_GridColor = GridColor IniFile.MinLnColor = GridColor IniFile.MajLnColor = GridColor EgtSetGridColor(IniFile.MinLnColor, IniFile.MajLnColor) WritePrivateProfileColor(S_GRID, K_MINLNCOLOR, OptionModule.m_GridColor) WritePrivateProfileColor(S_GRID, K_MAJLNCOLOR, OptionModule.m_GridColor) EgtDraw() NotifyPropertyChanged("GridColor") End If End Sub #End Region ' GridColor #Region "DefMaterialColor" ''' ''' Returns a command that remove the current selected machining. ''' Public ReadOnly Property DefMaterialColor_Command() As ICommand Get If m_cmdDefMaterialColor Is Nothing Then m_cmdDefMaterialColor = New RelayCommand(AddressOf DefMaterialColorCmd) End If Return m_cmdDefMaterialColor End Get End Property ''' ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. ''' Public Sub DefMaterialColorCmd() ' Recupero colore da Ini Dim DefColor As New Color3d(192, 192, 192) GetPrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, DefColor) ' Eseguo modifica con dialogo If SelectColor(DefColor, DefColor) Then OptionModule.m_DefMaterialColor = DefColor Map.refProjectVM.GetScene.SetDefaultMaterial(OptionModule.m_DefMaterialColor) WritePrivateProfileColor(S_GEOMDB, K_DEFAULTCOLOR, OptionModule.m_DefMaterialColor) EgtDraw() Map.refManageLayerExpanderVM.UpdateHeaderColor(OptionModule.m_DefMaterialColor) Map.refManageLayerExpanderVM.LoadObjTree() NotifyPropertyChanged("DefMaterialColor") End If End Sub #End Region ' DefMaterialColor #Region "UpdateLicence" ''' ''' Returns a command that update the licence. ''' Public ReadOnly Property UpdateLicence_Command() As ICommand Get If m_cmdUpdateLicenceCmd Is Nothing Then m_cmdUpdateLicenceCmd = New RelayCommand(AddressOf UpdateLicenceCmd) End If Return m_cmdUpdateLicenceCmd End Get End Property ''' ''' Update the licence. ''' Public Sub UpdateLicenceCmd() ' Apro dialogo per richiesta file licenza Dim LicDlg As New Microsoft.Win32.OpenFileDialog() With { .DefaultExt = ".lic", .Filter = "Licences (.lic)|*.lic", .CheckFileExists = True, .ValidateNames = True } If LicDlg.ShowDialog() = True Then ' Recupero il direttorio del file Dim sDir As String = Path.GetDirectoryName(LicDlg.FileName) ' Se il file non è già nel direttorio di configurazione lo copio If Not String.Equals(Path.GetFullPath(sDir), Path.GetFullPath(IniFile.m_sConfigDir), StringComparison.OrdinalIgnoreCase) Then Try File.Copy(LicDlg.FileName, Path.Combine(IniFile.m_sConfigDir, LicDlg.SafeFileName), True) Catch ex As Exception Return End Try End If ' Imposto il nuovo file di licenza nell'Ini WritePrivateProfileString(S_GENERAL, K_LICENCE, LicDlg.SafeFileName) End If End Sub #End Region ' AddMachine #Region "AddMachine" ''' ''' Returns a command that add a new machining. ''' Public ReadOnly Property AddMachine_Command() As ICommand Get If m_cmdAddMachineCmd Is Nothing Then m_cmdAddMachineCmd = New RelayCommand(AddressOf AddMachineCmd) End If Return m_cmdAddMachineCmd End Get End Property ''' ''' Add a new machining. ''' Public Sub AddMachineCmd() ' Apro dialogo per richiesta file zip di macchina Dim MachDlg As New Microsoft.Win32.OpenFileDialog() With { .DefaultExt = ".zip", .Filter = "Machines (.zip)|*.zip", .CheckFileExists = True, .ValidateNames = True } If MachDlg.ShowDialog() <> True Then Return Dim sMachZip As String = MachDlg.FileName Dim sMachName As String = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(sMachZip)) Dim sMachDir As String = Path.Combine(IniFile.m_sMachinesRoot, sMachName) ' Preparo direttorio temporaneo Dim sTempDir As String = Path.Combine(IniFile.m_sMachinesRoot, "Temp") Try If My.Computer.FileSystem.DirectoryExists(sTempDir) Then My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CreateDirectory(sTempDir) Catch ' Problemi di accesso al direttorio delle macchine Dim sErr As String = EgtMsg(6564) EgtOutLog(sErr & " (" & sTempDir & ")") MessageBox.Show(sErr, EgtMsg(MSG_MESSAGEBOX + 3), MessageBoxButton.OK) Return End Try ' Unzip nel direttorio temporaneo Using zip As New Ionic.Zip.ZipFile(sMachZip) zip.ExtractAll(sTempDir, Ionic.Zip.ExtractExistingFileAction.DoNotOverwrite) End Using ' Se non è una macchina segnalo il problema ed esco If Not My.Computer.FileSystem.FileExists(Path.Combine(sTempDir, sMachName, sMachName & ".ini")) Or Not My.Computer.FileSystem.FileExists(Path.Combine(sTempDir, sMachName, sMachName & ".mlde")) Then ' Il file {0} non contiene una macchina - Avviso Dim sOut As String = String.Format(EgtMsg(MSG_OPTIONPAGE + 29), sMachZip) MessageBox.Show(sOut, EgtMsg(MSG_MESSAGEBOX + 2), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Imposto data e ora correnti al file mlde della macchina Try File.SetLastWriteTime(Path.Combine(sTempDir, sMachName, sMachName & ".mlde"), System.DateTime.Now) Catch ex As Exception End Try ' Verifico esistenza di una macchina con lo stesso nome Dim bOldExists As Boolean = My.Computer.FileSystem.DirectoryExists(sMachDir) Dim bUpdate As Boolean = True If bOldExists Then Dim MachBox As New MachineBox(Application.Current.MainWindow, sMachName) Select Case MachBox.ShowDialog() Case MessageBoxResult.Yes bUpdate = False Case MessageBoxResult.No bUpdate = True Case MessageBoxResult.Cancel ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End Select ' Faccio una copia di backup della macchina corrente Dim sBackupDir As String = sMachDir & ".old" If My.Computer.FileSystem.DirectoryExists(sBackupDir) Then My.Computer.FileSystem.DeleteDirectory(sBackupDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If Try My.Computer.FileSystem.MoveDirectory(sMachDir, sBackupDir, True) Catch ex As Exception ' Ripristino lo stato originale ed esco My.Computer.FileSystem.MoveDirectory(sBackupDir, sMachDir, True) ' L'aggiornamento della macchina "{0}" non è riuscito. Dim sKo As String = String.Format(EgtMsg(MSG_OPTIONPAGE + 35), sMachName) EgtOutLog(sKo) MessageBox.Show(sKo, EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK, MessageBoxImage.Error) Return End Try End If ' Installo la macchina My.Computer.FileSystem.MoveDirectory(Path.Combine(sTempDir, sMachName), sMachDir, True) ' Se è un aggiornamento, recupero utensili, lavorazioni, attrezzaggi e dati per travi If bOldExists And bUpdate Then Dim sBackupDir As String = sMachDir & ".old" If My.Computer.FileSystem.DirectoryExists(sBackupDir & "\Tools") Then If My.Computer.FileSystem.DirectoryExists(sMachDir & "\Tools") Then My.Computer.FileSystem.DeleteDirectory(sMachDir & "\Tools", FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CopyDirectory(sBackupDir & "\Tools", sMachDir & "\Tools", True) End If If My.Computer.FileSystem.DirectoryExists(sBackupDir & "\Machinings") Then If My.Computer.FileSystem.DirectoryExists(sMachDir & "\Machinings") Then My.Computer.FileSystem.DeleteDirectory(sMachDir & "\Machinings", FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CopyDirectory(sBackupDir & "\Machinings", sMachDir & "\Machinings", True) End If If My.Computer.FileSystem.DirectoryExists(sBackupDir & "\SetUp") Then If My.Computer.FileSystem.DirectoryExists(sMachDir & "\SetUp") Then My.Computer.FileSystem.DeleteDirectory(sMachDir & "\SetUp", FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CopyDirectory(sBackupDir & "\SetUp", sMachDir & "\SetUp", True) End If If My.Computer.FileSystem.DirectoryExists(sBackupDir & "\Beam") Then ' Flag per sovrascrivere vecchio file BeamData.lua con nuovo Dim bBeamDataExists As Boolean = False Const sBeamData As String = "\BeamData.lua" ' Flag per sovrascrivere vecchio file MachiningTypes.ini Dim bMchgTypesExists As Boolean = False Const sMchgTypes As String = "\MachiningTypes.ini" If My.Computer.FileSystem.DirectoryExists(sMachDir & "\Beam") Then If My.Computer.FileSystem.FileExists(sMachDir & "\Beam" & sBeamData) Then bBeamDataExists = True My.Computer.FileSystem.MoveFile(sMachDir & "\Beam" & sBeamData, sMachDir & sBeamData, True) End If If My.Computer.FileSystem.FileExists(sMachDir & "\Beam" & sMchgTypes) Then bMchgTypesExists = True My.Computer.FileSystem.MoveFile(sMachDir & "\Beam" & sMchgTypes, sMachDir & sMchgTypes, True) End If My.Computer.FileSystem.DeleteDirectory(sMachDir & "\Beam", FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CopyDirectory(sBackupDir & "\Beam", sMachDir & "\Beam", True) If bBeamDataExists Then My.Computer.FileSystem.MoveFile(sMachDir & sBeamData, sMachDir & "\Beam" & sBeamData, True) If bMchgTypesExists Then My.Computer.FileSystem.MoveFile(sMachDir & sMchgTypes, sMachDir & "\Beam" & sMchgTypes, True) End If If My.Computer.FileSystem.DirectoryExists(sBackupDir & "\Wall") Then ' Flag per sovrascrittura vecchio file WallData.lua con nuovo Dim bWallDataExists As Boolean = False Const sWallData As String = "\WallData.lua" ' Flag per sovrascrivere vecchio file MachiningTypes.ini Dim bMchgTypesExists As Boolean = False Const sMchgTypes As String = "\MachiningTypes.ini" If My.Computer.FileSystem.DirectoryExists(sMachDir & "\Wall") Then If My.Computer.FileSystem.FileExists(sMachDir & "\Wall" & sWallData) Then bWallDataExists = True My.Computer.FileSystem.MoveFile(sMachDir & "\Wall" & sWallData, sMachDir & sWallData, True) End If If My.Computer.FileSystem.FileExists(sMachDir & "\Wall" & sMchgTypes) Then bMchgTypesExists = True My.Computer.FileSystem.MoveFile(sMachDir & "\Wall" & sMchgTypes, sMachDir & sMchgTypes, True) End If My.Computer.FileSystem.DeleteDirectory(sMachDir & "\Wall", FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CopyDirectory(sBackupDir & "\Wall", sMachDir & "\Wall", True) If bWallDataExists Then My.Computer.FileSystem.MoveFile(sMachDir & sWallData, sMachDir & "\Wall" & sWallData, True) If bMchgTypesExists Then My.Computer.FileSystem.MoveFile(sMachDir & sMchgTypes, sMachDir & "\Wall" & sMchgTypes, True) End If End If 'La macchina "{0}" è stata aggiornata con successo. Dim sOk As String = String.Format(EgtMsg(MSG_OPTIONPAGE + 30), sMachName) EgtOutLog(sOk) MessageBox.Show(sOk, EgtMsg(MSG_MESSAGEBOX + 3), MessageBoxButton.OK) ' Rimuovo il direttorio temporaneo My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) ' Aggiorno la lista delle macchina Map.refMachinePanelVM.InsertMachine(sMachDir) End Sub #End Region ' AddMachine #Region "ExportMachine" ''' ''' Returns a command that export a new machining. ''' Public ReadOnly Property ExportMachine_Command() As ICommand Get If m_cmdExportMachineCmd Is Nothing Then m_cmdExportMachineCmd = New RelayCommand(AddressOf ExportMachineCmd) End If Return m_cmdExportMachineCmd End Get End Property ''' ''' Export the current machine. ''' Public Sub ExportMachineCmd() ' Recupero il nome della macchina correntemente selezionata Dim sCurrMachineName As String = String.Empty EgtGetCurrMachineName(sCurrMachineName) ' Creo il dialog per scegliere dove salvare lo zip Dim sDirPath As String = String.Empty Dim folderDialog As New Windows.Forms.FolderBrowserDialog folderDialog.Description = EgtMsg(6550) If folderDialog.ShowDialog <> Windows.Forms.DialogResult.OK Then Return End If sDirPath = folderDialog.SelectedPath ' Creo zip file da salvare Dim sZipToCreate As String = sDirPath & "\" & sCurrMachineName & ".zip" If File.Exists(sZipToCreate) Then File.Delete(sZipToCreate) End If Try Using zip As New Ionic.Zip.ZipFile(sZipToCreate) zip.AlternateEncodingUsage = Ionic.Zip.ZipOption.Always zip.AlternateEncoding = Text.Encoding.UTF8 ' aggiungo i file della Macchina Dim sMachineDir As String = IniFile.m_sMachinesRoot & "\" & sCurrMachineName If Directory.Exists(sMachineDir) Then zip.AddSelectedFiles("name != *\.git\*.* and name != *.git*", sMachineDir, sCurrMachineName, True) End If ' salvo lo zip zip.Save() End Using Catch ex1 As Exception EgtOutLog("Exception in zip: " & ex1.ToString()) ' L'esportazione della macchina "{0}" non è riuscita. Dim sKo As String = String.Format(EgtMsg(6551), sCurrMachineName) EgtOutLog(sKo) MessageBox.Show(sKo, EgtMsg(MSG_MESSAGEBOX + 1), MessageBoxButton.OK) Return End Try 'La macchina "{0}" è stata esportata con successo. Dim sOk As String = String.Format(EgtMsg(6552), sCurrMachineName) EgtOutLog(sOk) MessageBox.Show(sOk, EgtMsg(MSG_MESSAGEBOX + 3), MessageBoxButton.OK) End Sub #End Region ' ExportMachine #Region "UpdateBeam" Public ReadOnly Property UpdateBeam_Command() As ICommand Get If m_cmdUpdateBeamCmd Is Nothing Then m_cmdUpdateBeamCmd = New RelayCommand(AddressOf UpdateBeamCmd) End If Return m_cmdUpdateBeamCmd End Get End Property Public Sub UpdateBeamCmd() ' Recupero la versione del programma in esecuzione Dim sExeVer As String = IniFile.GetProgramVersion() ' Verifico presenza di una precedente installazione del Beam Dim sBeamVer As String = "" IniFile.GetSpecialLuaVersion(IniFile.m_sBeamDirPath, sBeamVer) If String.IsNullOrEmpty(sBeamVer) Then ' Il modulo "{0}" non è stato trovato, impossibile aggiornare. - Avviso Dim sOut As String = String.Format(EgtMsg(6555), "Beam") MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Esco Return End If ' Apro dialogo per richiesta file zip del Beam Dim BeamDlg As New Microsoft.Win32.OpenFileDialog() With { .DefaultExt = ".zip", .Filter = "Beam (.zip)|*.zip", .CheckFileExists = True, .ValidateNames = True } If BeamDlg.ShowDialog() <> True Then Return Dim sBeamZip As String = BeamDlg.FileName ' Preparo direttorio temporaneo Dim sTempDir As String = Path.Combine(IniFile.m_sTempDir, "Beam") If My.Computer.FileSystem.DirectoryExists(sTempDir) Then My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CreateDirectory(sTempDir) ' Unzip nel direttorio temporaneo Using zip As New Ionic.Zip.ZipFile(sBeamZip) zip.ExtractAll(sTempDir, Ionic.Zip.ExtractExistingFileAction.DoNotOverwrite) End Using ' Recupero i dati del nuovo Beam Dim sNewName = "" Dim sNewVer = "" Dim sNewMinExe = "" IniFile.GetSpecialLuaData(sTempDir, sNewName, sNewVer, sNewMinExe) ' Verifico che sia veramente il Beam If String.Compare(sNewName, "Beam") <> 0 Then ' Il file zip non contiene il modulo "{0}". - Avviso Dim sOut As String = String.Format(EgtMsg(6556), "Beam") MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Verifico la versione minima del programma If String.Compare(sExeVer, sNewMinExe) < 0 Then ' Il nuovo modulo "{0}" richiede un programma con versione minima {1}. - Avviso Dim sOut As String = String.Format(EgtMsg(6557), "Beam", sNewMinExe) MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Verifico la versione del Beam e se più vecchia chiedo cosa fare If String.Compare(sNewVer, sBeamVer) < 0 Then ' La versione del nuovo modulo "{0}" è più vecchia dell'attuale. Vuoi sovrascrivere lo stesso ? Dim sOut As String = String.Format(EgtMsg(6558), "Beam") If MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15003), MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.No Then ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If End If ' Faccio una copia di backup del Beam corrente Dim sBackupDir As String = IniFile.m_sBeamDirPath & ".old" If My.Computer.FileSystem.DirectoryExists(sBackupDir) Then My.Computer.FileSystem.DeleteDirectory(sBackupDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If Try My.Computer.FileSystem.MoveDirectory(IniFile.m_sBeamDirPath, sBackupDir, True) Catch ex As Exception ' Ripristino lo stato originale ed esco My.Computer.FileSystem.MoveDirectory(sBackupDir, IniFile.m_sBeamDirPath, True) ' L'aggiornamento del modulo "{0}" non è riuscito. - Errore Dim sOut As String = String.Format(EgtMsg(6559), "Beam") EgtOutLog(sOut) MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15001), MessageBoxButton.OK, MessageBoxImage.Error) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End Try ' Installo il Beam My.Computer.FileSystem.MoveDirectory(sTempDir, IniFile.m_sBeamDirPath, True) ' Il modulo "{0}" è stata aggiornato con successo. - Info Dim sOk As String = String.Format(EgtMsg(6560), "Beam") EgtOutLog(sOk) MessageBox.Show(Application.Current.MainWindow, sOk, EgtMsg(15003), MessageBoxButton.OK) End Sub #End Region ' UpdateBeam #Region "UpdateWall" Public ReadOnly Property UpdateWall_Command() As ICommand Get If m_cmdUpdateWallCmd Is Nothing Then m_cmdUpdateWallCmd = New RelayCommand(AddressOf UpdateWallCmd) End If Return m_cmdUpdateWallCmd End Get End Property Public Sub UpdateWallCmd() ' Recupero la versione del programma in esecuzione Dim sExeVer As String = IniFile.GetProgramVersion() ' Verifico presenza di una precedente installazione del Wall Dim sWallVer As String = "" IniFile.GetSpecialLuaVersion(IniFile.m_sWallDirPath, sWallVer) If String.IsNullOrEmpty(sWallVer) Then ' Il modulo "{0}" non è stato trovato, impossibile aggiornare. - Avviso Dim sOut As String = String.Format(EgtMsg(6555), "Wall") MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Esco Return End If ' Apro dialogo per richiesta file zip del Wall Dim WallDlg As New Microsoft.Win32.OpenFileDialog() With { .DefaultExt = ".zip", .Filter = "Wall (.zip)|*.zip", .CheckFileExists = True, .ValidateNames = True } If WallDlg.ShowDialog() <> True Then Return Dim sWallZip As String = WallDlg.FileName ' Preparo direttorio temporaneo Dim sTempDir As String = Path.Combine(IniFile.m_sTempDir, "Wall") If My.Computer.FileSystem.DirectoryExists(sTempDir) Then My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CreateDirectory(sTempDir) ' Unzip nel direttorio temporaneo Using zip As New Ionic.Zip.ZipFile(sWallZip) zip.ExtractAll(sTempDir, Ionic.Zip.ExtractExistingFileAction.DoNotOverwrite) End Using ' Recupero i dati del nuovo Wall Dim sNewName = "" Dim sNewVer = "" Dim sNewMinExe = "" IniFile.GetSpecialLuaData(sTempDir, sNewName, sNewVer, sNewMinExe) ' Verifico che sia veramente il Wall If String.Compare(sNewName, "Wall") <> 0 Then ' Il file zip non contiene il modulo "{0}". - Avviso Dim sOut As String = String.Format(EgtMsg(6556), "Wall") MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Verifico la versione minima del programma If String.Compare(sExeVer, sNewMinExe) < 0 Then ' Il nuovo modulo "{0}" richiede un programma con versione minima {1}. - Avviso Dim sOut As String = String.Format(EgtMsg(6557), "Wall", sNewMinExe) MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Verifico la versione del Wall e se più vecchia chiedo cosa fare If String.Compare(sNewVer, sWallVer) < 0 Then ' La versione del nuovo modulo "{0}" è più vecchia dell'attuale. Vuoi sovrascrivere lo stesso ? Dim sOut As String = String.Format(EgtMsg(6558), "Wall") If MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15003), MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.No Then ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If End If ' Faccio una copia di backup del Wall corrente Dim sBackupDir As String = IniFile.m_sWallDirPath & ".old" If My.Computer.FileSystem.DirectoryExists(sBackupDir) Then My.Computer.FileSystem.DeleteDirectory(sBackupDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If Try My.Computer.FileSystem.MoveDirectory(IniFile.m_sWallDirPath, sBackupDir, True) Catch ex As Exception ' Ripristino lo stato originale ed esco My.Computer.FileSystem.MoveDirectory(sBackupDir, IniFile.m_sWallDirPath, True) ' L'aggiornamento del modulo "{0}" non è riuscito. - Errore Dim sOut As String = String.Format(EgtMsg(6559), "Wall") EgtOutLog(sOut) MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15001), MessageBoxButton.OK, MessageBoxImage.Error) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End Try ' Installo il Wall My.Computer.FileSystem.MoveDirectory(sTempDir, IniFile.m_sWallDirPath, True) ' Il modulo "{0}" è stata aggiornato con successo. - Info Dim sOk As String = String.Format(EgtMsg(6560), "Wall") EgtOutLog(sOk) MessageBox.Show(Application.Current.MainWindow, sOk, EgtMsg(15003), MessageBoxButton.OK) End Sub #End Region ' UpdateWall #Region "UpdateDoors" Public ReadOnly Property UpdateDoors_Command() As ICommand Get If m_cmdUpdateDoorsCmd Is Nothing Then m_cmdUpdateDoorsCmd = New RelayCommand(AddressOf UpdateDoorsCmd) End If Return m_cmdUpdateDoorsCmd End Get End Property Public Sub UpdateDoorsCmd() ' Recupero la versione del programma in esecuzione Dim sExeVer As String = IniFile.GetProgramVersion() ' Verifico presenza di una precedente installazione del Doors (file Version.lua oppure Main.lua) Dim sDoorsVer As String = "" IniFile.GetSpecialLuaVersion(IniFile.m_sDoorsDirPath, sDoorsVer) If String.IsNullOrEmpty(sDoorsVer) Then If My.Computer.FileSystem.FileExists(Path.Combine(IniFile.m_sDoorsDirPath, "Main.lua")) AndAlso My.Computer.FileSystem.FileExists(Path.Combine(IniFile.m_sDoorsDirPath, "Machining.lua")) Then sDoorsVer = "2.6l9" Else ' Il modulo "{0}" non è stato trovato, impossibile aggiornare. - Avviso Dim sOut As String = String.Format(EgtMsg(6555), "Doors") MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Esco Return End If End If ' Apro dialogo per richiesta file zip del Doors Dim DoorsDlg As New Microsoft.Win32.OpenFileDialog() With { .DefaultExt = ".zip", .Filter = "Doors (.zip)|*.zip", .CheckFileExists = True, .ValidateNames = True } If DoorsDlg.ShowDialog() <> True Then Return Dim sDoorsZip As String = DoorsDlg.FileName ' Preparo direttorio temporaneo Dim sTempDir As String = Path.Combine(IniFile.m_sTempDir, "Doors") If My.Computer.FileSystem.DirectoryExists(sTempDir) Then My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If My.Computer.FileSystem.CreateDirectory(sTempDir) ' Unzip nel direttorio temporaneo Using zip As New Ionic.Zip.ZipFile(sDoorsZip) zip.ExtractAll(sTempDir, Ionic.Zip.ExtractExistingFileAction.DoNotOverwrite) End Using ' Recupero i dati del nuovo Doors Dim sNewName = "" Dim sNewVer = "" Dim sNewMinExe = "" IniFile.GetSpecialLuaData(sTempDir, sNewName, sNewVer, sNewMinExe) ' Verifico che sia veramente il Doors If String.Compare(sNewName, "Doors") <> 0 Then ' Il file zip non contiene il modulo "{0}". - Avviso Dim sOut As String = String.Format(EgtMsg(6556), "Doors") MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Verifico la versione minima del programma If String.Compare(sExeVer, sNewMinExe) < 0 Then ' Il nuovo modulo "{0}" richiede un programma con versione minima {1}. - Avviso Dim sOut As String = String.Format(EgtMsg(6557), "Doors", sNewMinExe) MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If ' Verifico la versione del Doors e se più vecchia chiedo cosa fare If String.Compare(sNewVer, sDoorsVer) < 0 Then ' La versione del nuovo modulo "{0}" è più vecchia dell'attuale. Vuoi sovrascrivere lo stesso ? Dim sOut As String = String.Format(EgtMsg(6558), "Doors") If MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15003), MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.No Then ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End If End If ' Faccio una copia di backup del Doors corrente Dim sBackupDir As String = IniFile.m_sDoorsDirPath & ".old" If My.Computer.FileSystem.DirectoryExists(sBackupDir) Then My.Computer.FileSystem.DeleteDirectory(sBackupDir, FileIO.DeleteDirectoryOption.DeleteAllContents) End If Try My.Computer.FileSystem.CopyDirectory(IniFile.m_sDoorsDirPath, sBackupDir, True) Catch ex As Exception ' L'aggiornamento del modulo "{0}" non è riuscito. - Errore Dim sOut As String = String.Format(EgtMsg(6559), "Doors") EgtOutLog(sOut) MessageBox.Show(Application.Current.MainWindow, sOut, EgtMsg(15001), MessageBoxButton.OK, MessageBoxImage.Error) ' Rimuovo il direttorio temporaneo ed esco My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) Return End Try ' Installo il Doors My.Computer.FileSystem.CopyDirectory(sTempDir, IniFile.m_sDoorsDirPath, True) ' Rimuovo il direttorio temporaneo di installazione My.Computer.FileSystem.DeleteDirectory(sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents) ' Il modulo "{0}" è stata aggiornato con successo. - Info Dim sOk As String = String.Format(EgtMsg(6560), "Doors") EgtOutLog(sOk) MessageBox.Show(Application.Current.MainWindow, sOk, EgtMsg(15003), MessageBoxButton.OK) End Sub #End Region ' UpdateDoors #Region "CloseOptionsCommand" ''' ''' Returns a command that remove the current selected machining. ''' Public ReadOnly Property CloseOptionsCommand() As ICommand Get If m_cmdCloseOptions Is Nothing Then m_cmdCloseOptions = New RelayCommand(AddressOf CloseOptions) End If Return m_cmdCloseOptions End Get End Property ''' ''' Manage the MachiningDb closing. This method is invoked by the CloseMachiningDbCommand. ''' Public Sub CloseOptions() ' Chiusura finestra For Each Window In Application.Current.Windows If TypeOf Window Is OptionWindowV Then Dim OptionsWindow As OptionWindowV = DirectCast(Window, OptionWindowV) OptionsWindow.Close() End If Next End Sub #End Region ' CloseOptionsCommand #End Region ' COMMANDS Private Function SelectColor(Col As Color3d, ByRef NewCol As Color3d) As Boolean ' Recupero colori custom Dim sCustomColors As String = "" GetPrivateProfileString(S_SCENE, K_CUSTOMCOLORS, "", sCustomColors) Dim CustomColors() As String = sCustomColors.Split(","c) Dim nCustomColors As New List(Of Integer) For Each Color In CustomColors Dim nColor As Integer If Integer.TryParse(Color, nColor) Then nCustomColors.Add(nColor) End If Next ' Creo dialogo colori Dim ColorDlg As New System.Windows.Forms.ColorDialog ColorDlg.FullOpen = True ColorDlg.CustomColors = nCustomColors.ToArray() ColorDlg.Color = Col.ToColor() ' Visualizzo dialogo If ColorDlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return False ' Recupero colore scelto NewCol.FromColor(ColorDlg.Color) ' Salvo eventuali modifiche ai colori custom sCustomColors = "" For Each Color In ColorDlg.CustomColors sCustomColors &= Color.ToString() & "," Next sCustomColors = sCustomColors.Trim({" "c, ","c}) WritePrivateProfileString(S_SCENE, K_CUSTOMCOLORS, sCustomColors) Return True End Function End Class Public Class GeomTypeConverter Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert Select Case CInt(value) Case SceneSelModeOpt.PARTCURVES Return EgtMsg(MSG_OPTIONPAGE + 3) Case SceneSelModeOpt.PARTSURFACES Return EgtMsg(MSG_OPTIONPAGE + 4) Case Else Return EgtMsg(MSG_OPTIONPAGE + 5) End Select End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack Throw New NotImplementedException End Function End Class Public Class SceneSurfQualityOptConverter Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert Select Case CInt(value) Case SceneSurfQualityOpt.LOWER Return EgtMsg(31215) ' Inferiore Case SceneSurfQualityOpt.LOW Return EgtMsg(31216) ' Bassa Case SceneSurfQualityOpt.STANDARD Return EgtMsg(31217) ' Media Case SceneSurfQualityOpt.HIGH Return EgtMsg(31218) ' Alta Case SceneSurfQualityOpt.HIGHER Return EgtMsg(31219) ' Superiore Case Else Return "" End Select End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack Throw New NotImplementedException() End Function End Class Public Class VMillTypeConverter Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert Select Case CInt(value) Case VMillSelTypeOpt.LOWER Return EgtMsg(31215) ' Inferiore Case VMillSelTypeOpt.LOW Return EgtMsg(31216) ' Bassa Case VMillSelTypeOpt.STANDARD Return EgtMsg(31217) ' Media Case VMillSelTypeOpt.HIGH Return EgtMsg(31218) ' Alta Case VMillSelTypeOpt.HIGHER Return EgtMsg(31219) ' Superiore Case Else Return "" End Select End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack Throw New NotImplementedException() End Function End Class