Files
omagoffice/OptionWindow/OptionWindowVM.vb
T
Nicola Pievani ecf3821d08 OmagOFFICE 2.2h2:
-> gestione delle foto da databese OmagPHOTO con l'utilizzo della libreria EgtSTONELib.
2020-08-18 15:45:17 +00:00

548 lines
20 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.Windows.Forms
Imports EgtUILib
Imports EgtWPFLib5
Public Class OptionWindowVM
Inherits VMBase
#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
Private m_ColorItemList As New ObservableCollection(Of ColorLsBxItem)
Public ReadOnly Property ColorItemList As ObservableCollection(Of ColorLsBxItem)
Get
Return m_ColorItemList
End Get
End Property
Private Property m_TextColorBackground As Color3d
Public ReadOnly Property TextColorBackground As Brush
Get
Dim x = New SolidColorBrush(Color.FromArgb(m_TextColorBackground.A / 100 * 255, m_TextColorBackground.R, m_TextColorBackground.G, m_TextColorBackground.B))
Return x
End Get
'Set(value As Brush)
' If Not value.Equals(m_TextColorBackground) Then
' m_TextColorBackground = value
' NotifyPropertyChanged("TextColorBackground")
' End If
'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 ColorToSideAngMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 19)
End Get
End Property
Public ReadOnly Property CTSAboxEnableMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 20)
End Get
End Property
Public ReadOnly Property ToleranceMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 21)
End Get
End Property
Public ReadOnly Property TalloneMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 22)
End Get
End Property
Public ReadOnly Property InclinazioneMsg As String
Get
Return EgtMsg(MSG_OPTIONSPAGEUC + 23)
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)
Dim m_OptionWindowV As OptionWindowV = DirectCast(Application.Current.Windows.OfType(Of OptionWindowV)().SingleOrDefault(), OptionWindowV)
' I parametri di TextColor presenti nell'INI vengono caricati
Dim sTextColor As String = " "
If GetPrivateProfileString(S_NEST, K_TEXTCOLOR, " ", sTextColor, m_sIniFile) <> 0 Then
Dim sTextColorArray() As String = sTextColor.Split(",")
' TextColorBackground = New SolidColorBrush(Color.FromRgb(sTextColorArray(0), sTextColorArray(1), sTextColorArray(2)))
m_TextColorBackground = New Color3d(sTextColorArray(0), sTextColorArray(1), sTextColorArray(2))
End If
' Leggo se la modalità ColorToSideAng è abilitata
If GetPrivateProfileInt(S_COLORTOSIDEANG, K_CTSA_ENABLE, 0, m_sIniFile) <> 0 Then
CTSAChecked = True
Else
CTSAChecked = False
End If
' I parametri di ColorSideToAng presenti nell'INI vengono caricati a prescindere dall'abilitazione
Dim nVal As Integer
nVal = GetPrivateProfileInt(S_COLORTOSIDEANG, K_CTSA_TOLERANCE, nVal, m_sIniFile)
m_sToleranceTxBx = nVal
' Nel caso dei colori singoli viene verificata la presenza della Key corrispondente a ciascuno dei
' 10 singoli colori (CTSAindex) e il Valore associato viene splittato in un array di stringhe
For index As Integer = 1 To 10
Dim sColor As String = " "
Dim sArray() As String
If GetPrivateProfileString(S_COLORTOSIDEANG, K_CTSA & index, " ", sColor, m_sIniFile) <> 0 Then
sArray = sColor.Split(","c)
' Leggo elenco colori disponibili da file ini
Dim ReadColor As ColorLsBxItem = New ColorLsBxItem(index,
If(sArray.Length > 5, sArray(5).Equals("1"), True),
New Color3d(sArray(0), sArray(1), sArray(2), 100),
sArray(3),
sArray(4))
m_ColorItemList.Add(ReadColor)
Else
' Se CTSA di indice index non esiste nell'INI lo scrivo con dei valori di default e aggiungo ReadColor
' creato con i valori di default e indice index alla lista di colori
WritePrivateProfileString(S_COLORTOSIDEANG, K_CTSA & index, "255,255,255,0,0,0", m_sIniFile)
Dim ReadColor As ColorLsBxItem = New ColorLsBxItem(index, 0, New Color3d(255, 255, 255, 100), 0, 0)
m_ColorItemList.Add(ReadColor)
End If
Next
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)
'' Imposto il colore scelto sul pulsante
'TextColorBackground = New SolidColorBrush(Color.FromRgb(NewCol.R, NewCol.G, NewCol.B))
' Recupero colore da Ini
Dim NewCol As New Color3d(192, 192, 192, 100)
' Creo dialogo colori
Dim ColorDlg As New System.Windows.Forms.ColorDialog
ColorDlg.FullOpen = True
ColorDlg.Color = m_TextColorBackground.ToColor()
' Visualizzo dialogo
If ColorDlg.ShowDialog() <> DialogResult.OK Then Return
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)
' Imposto il colore scelto sul pulsante
m_TextColorBackground = NewCol
NotifyPropertyChanged("TextColorBackground")
End Sub
#End Region ' ChangeColorCommand
#Region "CTSAChecked"
Private Property m_CTSAChecked As Boolean
Public Property CTSAChecked As Boolean
Get
Return m_CTSAChecked
End Get
Set(value As Boolean)
If value <> m_CTSAChecked Then
m_CTSAChecked = value
If CTSAChecked = True Then
WritePrivateProfileString(S_COLORTOSIDEANG, K_CTSA_ENABLE, 1, m_sIniFile)
ElseIf CTSAChecked = False Then
WritePrivateProfileString(S_COLORTOSIDEANG, K_CTSA_ENABLE, 0, m_sIniFile)
End If
End If
End Set
End Property
#End Region ' CTSAChecked
#Region "CTSAbox Tolerance"
Private Property m_sToleranceTxBx As String
Public Property sToleranceTxBx As String
Get
Return m_sToleranceTxBx
End Get
Set(value As String)
If value <> m_sToleranceTxBx Then
m_sToleranceTxBx = value
Dim i As Integer = 0
Try
i = Integer.Parse(m_sToleranceTxBx, Globalization.NumberStyles.Any)
Catch ex As Exception
m_sToleranceTxBx = ""
End Try
WritePrivateProfileString(S_COLORTOSIDEANG,
K_CTSA_TOLERANCE,
If(String.IsNullOrWhiteSpace(m_sToleranceTxBx) OrElse m_sToleranceTxBx.Equals("-"), "0", m_sToleranceTxBx),
m_sIniFile)
End If
End Set
End Property
#End Region ' CTSAbox Tolerance
#End Region ' COMMANDS"
'-----------------------------------------------------------------------------------------------
Public Class ColorLsBxItem
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private Property m_nCTSAIndex As Integer
Public Property nCTSAIndex As Integer
Get
Return m_nCTSAIndex
End Get
Set(value As Integer)
If value <> m_nCTSAIndex Then
m_nCTSAIndex = value
End If
End Set
End Property
Private Property m_CTSAiChecked As Boolean
Public Property CTSAiChecked As Boolean
Get
Return m_CTSAiChecked
End Get
Set(value As Boolean)
If value <> m_CTSAiChecked Then
m_CTSAiChecked = value
CTSAiWriteString(value)
End If
End Set
End Property
Private Property m_CTSAiBackground As Color3d
Public ReadOnly Property CTSAiBackground As Brush
Get
Dim x = New SolidColorBrush(Color.FromArgb(m_CTSAiBackground.A / 100 * 255, m_CTSAiBackground.R, m_CTSAiBackground.G, m_CTSAiBackground.B))
Return x
End Get
End Property
Private Property m_sCTSAiInclinazioneText As String
Public Property sCTSAiInclinazioneText As String
Get
Return m_sCTSAiInclinazioneText
End Get
Set(value As String)
If value <> m_sCTSAiInclinazioneText Then
m_sCTSAiInclinazioneText = value
Dim i As Integer = 0
Try
If (m_sCTSAiInclinazioneText <> "-") Then
i = Integer.Parse(m_sCTSAiInclinazioneText, Globalization.NumberStyles.Any)
End If
Catch ex As Exception
m_sCTSAiInclinazioneText = ""
End Try
CTSAiWriteString(value)
End If
End Set
End Property
Private Property m_sCTSAiTalloneText As String
Public Property sCTSAiTalloneText As String
Get
Return m_sCTSAiTalloneText
End Get
Set(value As String)
If value <> m_sCTSAiTalloneText Then
m_sCTSAiTalloneText = value
Dim i As Integer = 0
Try
If (m_sCTSAiTalloneText <> "-") Then
i = Integer.Parse(m_sCTSAiTalloneText, Globalization.NumberStyles.Any)
End If
Catch ex As Exception
m_sCTSAiTalloneText = ""
End Try
CTSAiWriteString(value)
End If
End Set
End Property
' Definizione comandi
Private m_cmdChangeCTSAiColor As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New(Index As Integer, IsActive As Boolean, Color As Color3d, Inclinazione As Integer, Tallone As Integer)
Me.m_nCTSAIndex = Index
Me.m_CTSAiChecked = IsActive
Me.m_CTSAiBackground = Color
Me.m_sCTSAiInclinazioneText = Inclinazione
Me.m_sCTSAiTalloneText = Tallone
End Sub
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "ChangeCTSAiColorCommand"
Public ReadOnly Property ChangeCTSAiColorCommand As ICommand
Get
If m_cmdChangeCTSAiColor Is Nothing Then
m_cmdChangeCTSAiColor = New Command(AddressOf ChangeCTSAiColor)
End If
Return m_cmdChangeCTSAiColor
End Get
End Property
Public Sub ChangeCTSAiColor(ByVal param As Object)
' Recupero colore da Ini
Dim NewCol As New Color3d(192, 192, 192, 100)
' Creo dialogo colori
Dim ColorDlg As New System.Windows.Forms.ColorDialog
ColorDlg.FullOpen = True
ColorDlg.Color = m_CTSAiBackground.ToColor()
' Visualizzo dialogo
If ColorDlg.ShowDialog() <> DialogResult.OK Then Return
NewCol.FromColor(ColorDlg.Color)
Dim Rvalue As String = NewCol.R
Dim Gvalue As String = NewCol.G
Dim Bvalue As String = NewCol.B
' Costruisco la string RgbCTSA che corrisponderà al valore da scrivere nell'INI;
' in caso di valore null o " " verrà scritto nella stringa il valore 0 (o 1 nel caso dell'Enable)
Dim RgbCTSA As String = If(String.IsNullOrWhiteSpace(Rvalue), "0", Rvalue) & "," &
If(String.IsNullOrWhiteSpace(Gvalue), "0", Gvalue) & "," &
If(String.IsNullOrWhiteSpace(Bvalue), "0", Bvalue) & "," &
If(String.IsNullOrWhiteSpace(sCTSAiInclinazioneText), "0", sCTSAiInclinazioneText) & "," &
If(String.IsNullOrWhiteSpace(sCTSAiTalloneText), "0", sCTSAiTalloneText) & "," &
If(CTSAiChecked, "1", "0")
WritePrivateProfileString(S_COLORTOSIDEANG, K_CTSA & nCTSAIndex, RgbCTSA, m_sIniFile)
' Imposto il colore scelto sul pulsante
m_CTSAiBackground = NewCol
NotifyPropertyChanged("CTSAiBackground")
End Sub
#End Region ' ChangeCTSAiColorCommand
#End Region ' COMMANDS
#Region "METHODS"
Private Sub CTSAiWriteString(ByVal param As Object)
Dim Rvalue As String = m_CTSAiBackground.R
Dim Gvalue As String = m_CTSAiBackground.G
Dim Bvalue As String = m_CTSAiBackground.B
' Costruisco la string RgbCTSA che corrisponderà al valore da scrivere nell'INI;
' in caso di valore null o " " verrà scritto nella stringa il valore 0 (o 1 nel caso dell'Enable)
Dim RgbCTSA As String = If(String.IsNullOrWhiteSpace(Rvalue), "0", Rvalue) & "," &
If(String.IsNullOrWhiteSpace(Gvalue), "0", Gvalue) & "," &
If(String.IsNullOrWhiteSpace(Bvalue), "0", Bvalue) & "," &
If(String.IsNullOrWhiteSpace(sCTSAiInclinazioneText), "0", sCTSAiInclinazioneText) & "," &
If(String.IsNullOrWhiteSpace(sCTSAiTalloneText) OrElse sCTSAiTalloneText.Equals("-"), "0", sCTSAiTalloneText) & "," &
If(CTSAiChecked, "1", "0")
WritePrivateProfileString(S_COLORTOSIDEANG, K_CTSA & nCTSAIndex, RgbCTSA, m_sIniFile)
End Sub
#End Region
End Class
End Class