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