Files
omagoffice/OptionWindow/OptionWindowVM.vb
T
Renzo Lanza b01598c2fe
2019-07-04 07:28:25 +00:00

223 lines
6.8 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.Windows.Forms
Imports EgtUILib
Imports EgtWPFLib5
Public Class OptionWindowVM
#Region "FIELDS & PROPERTIES"
Private m_LanguageList As New List(Of Language)
Public ReadOnly Property LanguageList As List(Of Language)
Get
Return m_LanguageList
End Get
End Property
Private m_SelLanguage As Language
Public Property SelLanguage As Language
Get
Return m_SelLanguage
End Get
Set(value As Language)
If value IsNot m_SelLanguage Then
m_SelLanguage = value
WriteMainPrivateProfileString(S_GENERAL, K_MESSAGES, m_SelLanguage.Name)
End If
End Set
End Property
Private m_MeasureUnitList As New List(Of String)({"inch", "mm"})
Public ReadOnly Property MeasureUnitList As List(Of String)
Get
Return m_MeasureUnitList
End Get
End Property
Private m_SideModeList As List(Of String)
Public ReadOnly Property SideModeList As List(Of String)
Get
Return m_SideModeList
End Get
End Property
Private m_SelSideModeIndex As Integer
Public Property SelSideModeIndex As Integer
Get
Return m_SelSideModeIndex
End Get
Set(value As Integer)
If value <> m_SelSideModeIndex Then
m_SelSideModeIndex = value
WriteMainPrivateProfileString(S_COMPO, K_SIDEMODE, m_SelSideModeIndex.ToString())
End If
End Set
End Property
Public Property SelMeasureUnit As Integer
Get
Return If(EgtUiUnitsAreMM(), MeasureUnitOpt.MM, MeasureUnitOpt.INCH)
End Get
Set(value As Integer)
' salvo unità di misura precedente
Dim PrevMeasureUnit As MeasureUnitOpt = If(EgtUiUnitsAreMM(), MeasureUnitOpt.MM, MeasureUnitOpt.INCH)
If value <> PrevMeasureUnit Then
' cambio unità di misura
EgtSetUiUnits(DirectCast(value, MeasureUnitOpt) = MeasureUnitOpt.MM)
OmagOFFICEMap.refStatusBarVM.SetMeasureUnit(value)
WriteMainPrivateProfileString(S_GENERAL, K_MMUNITS, value.ToString())
' aggiorno le unità di misura nelle Tab
OmagOFFICEMap.refRawPartTabVM.Refresh(PrevMeasureUnit)
OmagOFFICEMap.refNestingTabVM.Refresh(PrevMeasureUnit)
OmagOFFICEMap.refMoveRawModeVM.Refresh(PrevMeasureUnit)
OmagOFFICEMap.refSimulTabVM.Refresh(PrevMeasureUnit)
End If
End Set
End Property
Public Property DIGeneral As Boolean
Get
Return (GetMainPrivateProfileInt(S_NEST, K_DIRECT, 0) <> 0)
End Get
Set(value As Boolean)
WriteMainPrivateProfileString(S_NEST, K_DIRECT, If(value, "1", "0"))
End Set
End Property
Public Property DICsv As Boolean
Get
Return GetMainPrivateProfileInt(S_CSV, K_CSVDIRECT, 1) <> 0
End Get
Set(value As Boolean)
WriteMainPrivateProfileString(S_CSV, K_CSVDIRECT, If(value, "1", "0"))
End Set
End Property
#Region "Messages"
Public ReadOnly Property Title As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 1)
End Get
End Property
Public ReadOnly Property CurrentLanguageMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 1)
End Get
End Property
Public ReadOnly Property LanguageAdvertMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 2)
End Get
End Property
Public ReadOnly Property MeasureUnitMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 3)
End Get
End Property
Public ReadOnly Property TextColorMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 13)
End Get
End Property
Public ReadOnly Property SideAngleHdr As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 5)
End Get
End Property
Public ReadOnly Property DirectInsertHdr As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 8)
End Get
End Property
Public ReadOnly Property DIGeneralMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 9)
End Get
End Property
Public ReadOnly Property DICsvMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 10)
End Get
End Property
'Definizione comandi
Private m_cmdChangeColor As ICommand
#End Region
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
' Leggo nome lingua corrente
Dim sLanguage As String = String.Empty
GetMainPrivateProfileString(S_GENERAL, K_MESSAGES, "", sLanguage)
' Leggo elenco lingue disponibili da file ini e imposto lingua corrente
Dim nIndex As Integer = 1
While True
Dim ReadLanguage As Language = GetMainPrivateProfileLanguage(S_LANGUAGES, K_LANGUAGE & nIndex)
If IsNothing(ReadLanguage) Then Exit While
m_LanguageList.Add(ReadLanguage)
If String.Compare(ReadLanguage.Name, sLanguage, True) = 0 Then
m_SelLanguage = ReadLanguage
End If
nIndex += 1
End While
' Carico messaggi per lista tipologie di definizione angolo d'inclinazione
m_SideModeList = New List(Of String)({EgtMsg(MSG_OPTIONSPAGEUC + 6), EgtMsg(MSG_OPTIONSPAGEUC + 7)})
' Carico valore da file ini
m_SelSideModeIndex = GetMainPrivateProfileInt(S_COMPO, K_SIDEMODE, 0)
End Sub
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "ChangeColorCommand"
''' <summary>
''' Returns a command that do ChangeColor.
''' </summary>
Public ReadOnly Property ChangeColorCommand As ICommand
Get
If m_cmdChangeColor Is Nothing Then
m_cmdChangeColor = New Command(AddressOf ChangeColor)
End If
Return m_cmdChangeColor
End Get
End Property
''' <summary>
''' Execute the ChangeColor. This method is invoked by the ChangeColorCommand.
''' </summary>
Public Sub ChangeColor(ByVal param As Object)
' Recupero colore da Ini
Dim TextColor As New Color3d(192, 192, 192)
Dim NewCol As New Color3d(192, 192, 192)
GetPrivateProfileColor(S_NEST, K_TEXTCOLOR, TextColor, m_sIniFile)
' Creo dialogo colori
Dim ColorDlg As New System.Windows.Forms.ColorDialog
ColorDlg.FullOpen = True
ColorDlg.Color = TextColor.ToColor()
' Visualizzo dialogo
ColorDlg.ShowDialog()
NewCol.FromColor(ColorDlg.Color)
' Salvo eventuali modifiche al colore scelto
Dim sColor As String = NewCol.R & "," & NewCol.G & "," & NewCol.B
WritePrivateProfileString(S_NEST, K_TEXTCOLOR, sColor, m_sIniFile)
End Sub
#End Region ' ChangeColorCommand
#End Region ' COMMANDS"
End Class