Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
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
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 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 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 SmoothTriMesh As Boolean
Get
Return OptionModule.m_bTriMeshSmoothed
End Get
Set(value As Boolean)
OptionModule.m_bTriMeshSmoothed = value
WritePrivateProfileString(S_SCENE, K_SHOWTRIAADV, If(value, "1", "0"))
EgtSetShowTriaAdv(value)
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)
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)
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)
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
' Definizione comandi
Private m_cmdCloseOptions As ICommand
Private m_cmdTopSceneBackground As ICommand
Private m_cmdBotSceneBackground As ICommand
Private m_cmdGridColor As ICommand
Private m_cmdDefMaterialColor As ICommand
Private m_cmdAddMachineCmd 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 SmoothTriMeshMsg As String
Get
Return EgtMsg(MSG_OPTIONPAGE + 18)
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 ImportMsg As String
Get
Return EgtMsg(MSG_OPTIONPAGE + 19)
End Get
End Property
Public ReadOnly Property DxfScaleFactorMsg As String
Get
Return EgtMsg(MSG_OPTIONPAGE + 20)
End Get
End Property
Public ReadOnly Property StlScaleFactorMsg As String
Get
Return EgtMsg(MSG_OPTIONPAGE + 21)
End Get
End Property
Public ReadOnly Property ImageScaleFactorMsg As String
Get
Return EgtMsg(MSG_OPTIONPAGE + 22)
End Get
End Property
Public ReadOnly Property ExportMsg As String
Get
Return EgtMsg(MSG_OPTIONPAGE + 23)
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
#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()
Application.Msn.NotifyColleagues(Application.UPDATEHEADERCOLOR, OptionModule.m_DefMaterialColor)
Application.Msn.NotifyColleagues(Application.LOADOBJTREE)
NotifyPropertyChanged("DefMaterialColor")
End If
End Sub
#End Region ' DefMaterialColor
#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(sMachZip)
Dim sMachDir As String = Path.Combine(IniFile.m_sMachinesRoot, sMachName)
' Preparo direttorio temporaneo
Dim sTempDir As String = Path.Combine(IniFile.m_sMachinesRoot, "Temp")
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(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
' Verifico esistenza di una macchina con lo stesso nome
If My.Computer.FileSystem.DirectoryExists(sMachDir) Then
' La macchina {0} esiste già,
vuoi sostituirla ? - Avviso
Dim sOut As String = String.Format(EgtMsg(MSG_OPTIONPAGE + 28), sMachName)
Select MessageBox.Show(sOut, EgtMsg(MSG_MESSAGEBOX + 2), MessageBoxButton.YesNo, MessageBoxImage.Warning)
Case MessageBoxResult.Yes
' 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
My.Computer.FileSystem.MoveDirectory( sMachDir, sBackupDir, True)
Case MessageBoxResult.No
' Rimuovo il direttorio temporaneo ed esco
My.Computer.FileSystem.DeleteDirectory( sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents)
Return
End Select
End If
' Installo la macchina
My.Computer.FileSystem.MoveDirectory( Path.Combine( sTempDir, sMachName), sMachDir, True)
'La macchina "{0}" è stata aggiunta con successo.
Dim sOk As String = String.Format(EgtMsg(MSG_OPTIONPAGE + 30), sMachName)
MessageBox.Show(sOk, EgtMsg(MSG_MESSAGEBOX + 3), MessageBoxButton.OK, MessageBoxImage.Information)
' Rimuovo il direttorio temporaneo
My.Computer.FileSystem.DeleteDirectory( sTempDir, FileIO.DeleteDirectoryOption.DeleteAllContents)
' Aggiorno la lista delle macchina
Map.refStatusBarVM.InsertMachine( sMachDir)
End Sub
#End Region ' AddMachine
#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