Files
OmagCUT/DirectCuts/ControlsMachineButtonUC.xaml.vb
T
Dario Sassi 3c2c0a48ff OmagCUT 3.1b2 :
- razionalizzazione e correzioni a gestione comandi diretti tramite script lua.
2026-02-28 19:24:10 +01:00

876 lines
32 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.ComponentModel
Imports EgtUILib
Public Class ControlsMachineButtonUC
Implements INotifyPropertyChanged
' Costanti per nomi stati dei bottoni
Private Const BTN_STATE_NOTHING As String = "Nothing"
Private Enum MachineButtonType As Integer
NOSTATE = 0
TWOSTATE = 1
THREESTATE = 2
DOUBLECOMMAND = 3
PRESSEDCOMMAND = 4
End Enum
' Dichiarazione delle Page UserControl
Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Private m_DirectCutPage As DirectCutPageUC
Friend m_CN As CN_generico
Private m_bFirst As Boolean = True
' visualizzo l'elenco degli elementi della pagina sono al primo avvio
Friend Shared m_OutLogTypeButton As Boolean = True
' Creazione converter da String a ImageSource
Dim ImageConverter As New ImageSourceConverter
Private m_ButtonList As New ObservableCollection(Of MachineButton)
Public ReadOnly Property ButtonList As ObservableCollection(Of MachineButton)
Get
Return m_ButtonList
End Get
End Property
Private Sub ControlsMachineButtonUC_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
Me.DataContext = Me
End Sub
Private Sub ControlsMachineButtonUC_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
If m_bFirst Then
m_DirectCutPage = m_MainWindow.m_DirectCutPageUC
m_bFirst = False
' Lettura configurazione bottoni da Ini di macchina
Dim m_nCount As Integer = 1
Dim bFoundBtn As Boolean = True
While bFoundBtn
Dim sNameBtn As String = K_BUTTON & (m_nCount).ToString()
Dim sMachineButtonType As String = String.Empty
Dim sTImageName As String = String.Empty
Dim sTLuaScriptName As String = String.Empty
Dim sFImageName As String = String.Empty
Dim sFLuaScriptName As String = String.Empty
Dim sStateFlag As String = String.Empty
bFoundBtn = GetPrivateProfileMachineButtons(S_CONTROLMACHBUTTONS, sNameBtn, sMachineButtonType, sTImageName, sTLuaScriptName, sFImageName, sFLuaScriptName, sStateFlag, m_MainWindow.GetMachIniFile())
If bFoundBtn Then
m_nCount += 1
Dim ButtonToAdd As MachineButton = Nothing
Select Case sMachineButtonType
Case MachineButtonType.NOSTATE
ButtonToAdd = New NoStateButton(sTImageName, sTLuaScriptName, sFImageName, sFLuaScriptName, sStateFlag)
Case MachineButtonType.TWOSTATE
ButtonToAdd = New TwoStateButton(sTImageName, sTLuaScriptName, sFImageName, sFLuaScriptName, sStateFlag)
Case MachineButtonType.THREESTATE
ButtonToAdd = New ThreeStateButton(sTImageName, sTLuaScriptName, sFImageName, sFLuaScriptName, sStateFlag)
Case MachineButtonType.DOUBLECOMMAND
ButtonToAdd = New DoubleCommandButton(sTImageName, sTLuaScriptName, sFImageName, sFLuaScriptName, sStateFlag)
Case MachineButtonType.PRESSEDCOMMAND
ButtonToAdd = New PressedCommandButton(sTImageName, sTLuaScriptName, sFImageName, sFLuaScriptName, sStateFlag)
End Select
If Not IsNothing(ButtonToAdd) Then m_ButtonList.Add(ButtonToAdd)
End If
End While
For Each MachineButton As MachineButton In m_ButtonList
GetTypeButton(MachineButton)
Next
m_OutLogTypeButton = False
NotifyPropertyChanged("ButtonList")
End If
End Sub
#Region "STATE CHANGED"
' ------------------------------------------------------------------------------
' i segeunti metodi notificano il cambiamento di stato di specifici bottoni
'-------------------------------------------------------------------------------
Friend Sub GetTypeButton(CurrMachineButton As MachineButton)
If Not m_OutLogTypeButton Then Return
Dim BtnType As Type = CurrMachineButton.GetType
If BtnType Is GetType(NoStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(0) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(TwoStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(1) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(ThreeStateButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(2) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(DoubleCommandButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(3) ") & " , " & CurrMachineButton.StateFlag)
ElseIf BtnType Is GetType(PressedCommandButton) Then
EgtOutLog("" & BtnType.ToString.Replace("OmagCUT.", "(4) ") & " , " & CurrMachineButton.StateFlag)
End If
End Sub
Friend Sub SpindleStateChanged(SpindleState As Boolean)
Dim SpindleButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_SPINDLE Then
SpindleButton = MachineButton
End If
Next
If Not IsNothing(SpindleButton) Then
SpindleButton.SetIsChecked(SpindleState)
End If
End Sub
Friend Sub LaserStateChanged(LaserState As Boolean)
Dim LaserButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_LASER Then
LaserButton = MachineButton
End If
Next
If Not IsNothing(LaserButton) Then
LaserButton.SetIsChecked(LaserState)
End If
End Sub
Friend Sub FeedHoldChanged(FeedHoldState As Boolean)
Dim FeedHoldButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_FEEDHOLD Then
FeedHoldButton = MachineButton
End If
Next
If Not IsNothing(FeedHoldButton) Then
FeedHoldButton.SetIsChecked(FeedHoldState)
End If
End Sub
Friend Sub SpeedHoldChanged(SpeedHoldState As Boolean)
Dim SpeedHoldButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_SPEEDHOLD Then
SpeedHoldButton = MachineButton
End If
Next
If Not IsNothing(SpeedHoldButton) Then
SpeedHoldButton.SetIsChecked(SpeedHoldState)
End If
End Sub
Friend Sub LaserTracStateChanged(LaserTracState As Boolean)
Dim LaserTracButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_LASERTRAC Then
LaserTracButton = MachineButton
End If
Next
If Not IsNothing(LaserTracButton) Then
LaserTracButton.SetIsChecked(LaserTracState)
End If
End Sub
Friend Sub CoolantStateChanged(CoolantState As Boolean)
Dim CoolantButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_COOLANT Then
CoolantButton = MachineButton
End If
Next
If Not IsNothing(CoolantButton) Then
CoolantButton.SetIsChecked(CoolantState)
End If
End Sub
Friend Sub InternalCoolantStateChanged(InternalCoolantState As Boolean)
Dim IntCoolantButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_INTERNALCOOLANT Then
IntCoolantButton = MachineButton
End If
Next
If Not IsNothing(IntCoolantButton) Then
IntCoolantButton.SetIsChecked(InternalCoolantState)
End If
End Sub
Friend Sub ExternCoolantStateChanged(ExternCoolantState As Boolean)
Dim ExtCoolantButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_EXTERNCOOLANT Then
ExtCoolantButton = MachineButton
End If
Next
If Not IsNothing(ExtCoolantButton) Then
ExtCoolantButton.SetIsChecked(ExternCoolantState)
End If
End Sub
Friend Sub CBAxesStateChanged(CBAxesState As Boolean)
Dim CAxesButton As TwoStateButton = Nothing
Dim BAxesButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_CAXES Then
CAxesButton = MachineButton
ElseIf MachineButton.StateFlag = K_BAXES Then
BAxesButton = MachineButton
End If
Next
If Not IsNothing(CAxesButton) Then
CAxesButton.SetIsChecked(CBAxesState)
End If
If Not IsNothing(BAxesButton) Then
BAxesButton.SetIsChecked(Not CBAxesState)
End If
End Sub
Friend Sub AirBlowStateChanged(AirBlowState As Boolean)
Dim AirBlowButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_AIRBLOW Then
AirBlowButton = MachineButton
End If
Next
If Not IsNothing(AirBlowButton) Then
AirBlowButton.SetIsChecked(AirBlowState)
End If
End Sub
Friend Sub HomeStateChanged(HomeState As Boolean)
Dim HomeButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_HOME Then
HomeButton = MachineButton
End If
Next
If Not IsNothing(HomeButton) Then
HomeButton.SetIsChecked(HomeState)
End If
End Sub
Friend Sub TableUpChanged(TableUpState As Boolean)
Dim TableUpButton As PressedCommandButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_TABLEUP Then
TableUpButton = MachineButton
End If
Next
If Not IsNothing(TableUpButton) Then
TableUpButton.SetIsPressed(TableUpState)
End If
End Sub
Friend Sub TableDownChanged(TableDownState As Boolean)
Dim TableDownButton As PressedCommandButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_TABLEDOWN Then
TableDownButton = MachineButton
End If
Next
If Not IsNothing(TableDownButton) Then
TableDownButton.SetIsPressed(TableDownState)
End If
End Sub
Friend Sub HSMChanged(HsmState As Boolean)
Dim HsmButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_HSM Then
HsmButton = MachineButton
End If
Next
If Not IsNothing(HsmButton) Then
HsmButton.SetIsChecked(HsmState)
End If
End Sub
Friend Sub DoorClosedChanged(DoorClosedState As Integer)
Dim DoorClosedButton As ThreeStateButton = Nothing
Dim DoorOpenedButton As ThreeStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_DOORCLOSED Then
DoorClosedButton = MachineButton
End If
If MachineButton.StateFlag = K_DOOROPENDED Then
DoorOpenedButton = MachineButton
End If
Next
' Chiusura porte (gesrtione comando Three/Two state
If Not IsNothing(DoorClosedButton) Then
Select Case DoorClosedState
Case 0
' porta aperta
DoorClosedButton.Background = Application.Current.FindResource("OmagCut_Red")
Case 1, 2
' porta in movimento/aperta
DoorClosedButton.Background = Application.Current.FindResource("OmagCut_LightGray")
End Select
End If
' Chiusura porte (gesrtione comando Three/Two state
If Not IsNothing(DoorOpenedButton) Then
Select Case DoorClosedState
Case 0
' porta aperta
DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_LightGray")
Case 1
' porta in movimento
DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_Yellow")
Case 2
' porta chiusa
DoorOpenedButton.Background = Application.Current.FindResource("OmagCut_Green")
End Select
End If
End Sub
Friend Sub LimitZChanged(LimitZState As Boolean)
Dim TwoLimitZButton As TwoStateButton = Nothing
Dim DoubleLimitZButton As DoubleCommandButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_LIMITZ Then
If TypeOf MachineButton Is DoubleCommandButton Then
DoubleLimitZButton = MachineButton
If Not IsNothing(DoubleLimitZButton) Then
DoubleLimitZButton.SetIsChecked(LimitZState)
End If
ElseIf TypeOf MachineButton Is TwoStateButton Then
TwoLimitZButton = MachineButton
If Not IsNothing(TwoLimitZButton) Then
TwoLimitZButton.SetIsChecked(LimitZState)
End If
End If
End If
Next
End Sub
Friend Sub FiveAxisStateChanged(FiveAxisState As Boolean)
Dim ThreeAxesButton As TwoStateButton = Nothing
Dim FiveAxesButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_THREEAXES Then
ThreeAxesButton = MachineButton
ElseIf MachineButton.StateFlag = K_FIVEAXES Then
FiveAxesButton = MachineButton
End If
Next
If Not IsNothing(ThreeAxesButton) Then
ThreeAxesButton.SetIsChecked(Not FiveAxisState)
End If
If Not IsNothing(FiveAxesButton) Then
FiveAxesButton.SetIsChecked(FiveAxisState)
End If
End Sub
Friend Sub ParkingStateChanged(ParkingState As Boolean)
Dim ParkingButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_PARKING Then
ParkingButton = MachineButton
End If
Next
If Not IsNothing(ParkingButton) Then
ParkingButton.SetIsChecked(ParkingState)
End If
End Sub
Friend Sub ZoneStateChanged(ZoneState As Integer)
Dim bEnableZone1 As Boolean = False
If ZoneState = 1 Then
bEnableZone1 = True
ElseIf ZoneState = 2 Then
bEnableZone1 = False
End If
' attivo il comando associato
Dim EnableZoneButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = BTN_ENABLE_ZONE_1 Then
EnableZoneButton = MachineButton
End If
Next
If Not IsNothing(EnableZoneButton) Then
EnableZoneButton.SetIsChecked(bEnableZone1)
End If
' disattivo l'altro per esclusione
EnableZoneButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = BTN_ENABLE_ZONE_2 Then
EnableZoneButton = MachineButton
End If
Next
If Not IsNothing(EnableZoneButton) Then
EnableZoneButton.SetIsChecked(Not bEnableZone1)
End If
End Sub
Friend Sub PcStateChanged(EnablePC As Integer)
Dim bEnablePC1 As Boolean = False
If EnablePC = 1 Then
bEnablePC1 = True
ElseIf EnablePC = 2 Then
bEnablePC1 = False
End If
' attivo/disattivo il comando associato
Dim EnablePCButton As TwoStateButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = K_ENABLEPC & "_1" Then
EnablePCButton = MachineButton
End If
Next
If Not IsNothing(EnablePCButton) Then
EnablePCButton.SetIsChecked(bEnablePC1)
End If
' disattivo/attivo l'altro per esclusione
EnablePCButton = Nothing
For Each MachineButton As MachineButton In m_ButtonList
If MachineButton.StateFlag = BTN_ENABLE_ZONE_2 Then
EnablePCButton = MachineButton
End If
Next
If Not IsNothing(EnablePCButton) Then
EnablePCButton.SetIsChecked(Not bEnablePC1)
End If
End Sub
#End Region ' State Range
Public Function GetPrivateProfileMachineButtons(
ByVal lpAppName As String,
ByVal lpKeyName As String,
ByRef lpMachineButtonType As String,
ByRef lpTImageName As String,
ByRef lpTLuaScriptName As String,
ByRef lpFImageName As String,
ByRef lpFLuaScriptName As String,
ByRef lpStateFlag As String,
ByVal lpFileName As String) As Boolean
Dim sVal As String = String.Empty
GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName)
Dim sItems() As String = sVal.Split(",".ToCharArray)
If sItems.Count() >= 3 Then
lpMachineButtonType = sItems(0)
lpTImageName = sItems(1)
lpTLuaScriptName = sItems(2)
If sItems.Count() >= 4 Then
lpStateFlag = sItems(3)
If sItems.Count() >= 6 Then
lpFImageName = sItems(4)
lpFLuaScriptName = sItems(5)
End If
Else
lpStateFlag = BTN_STATE_NOTHING
End If
Return True
End If
Return False
End Function
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
#Region "EVENTS"
' qesti eventi evsnti sono generati direttamente dei bottoni di tipo "Pressed"
Private Sub PressedCommandButton_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs)
Dim Button As Button = DirectCast(sender, Button)
If TypeOf Button.DataContext Is PressedCommandButton Then
Dim PressedButton As PressedCommandButton = DirectCast(Button.DataContext, PressedCommandButton)
PressedButton.OnMouseUp()
End If
End Sub
Private Sub PressedCommandButton_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
Dim Button As Button = DirectCast(sender, Button)
If TypeOf Button.DataContext Is PressedCommandButton Then
Dim PressedButton As PressedCommandButton = DirectCast(Button.DataContext, PressedCommandButton)
PressedButton.OnMouseDown()
End If
End Sub
#End Region
End Class
Public MustInherit Class MachineButton
Implements INotifyPropertyChanged
' Costanti per nomi stati dei bottoni
Friend Const BTN_STATE_SPINDLE As String = "Spindle"
Friend Const BTN_STATE_COOLANT As String = "Coolant"
Friend Const BTN_STATE_LASER As String = "Laser"
Friend Const BTN_STATE_LASERTRAC As String = "LaserTrac"
Friend Const BTN_STATE_THREEAXIS As String = "ThreeAxis"
Friend Const BTN_STATE_FIVEAXIS As String = "FiveAxis"
Friend Const BTN_STATE_NOTHING As String = "Nothing"
Friend Const BTN_ENABLE_ZONE_1 As String = "EnableZone1"
Friend Const BTN_ENABLE_ZONE_2 As String = "EnableZone2"
' Dichiarazione delle Page UserControl
Friend Shared m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)
Friend Shared m_DirectCutPage As DirectCutPageUC = m_MainWindow.m_DirectCutPageUC
Friend Shared m_CN As CN_generico = m_MainWindow.m_DirectCutPageUC.m_CN
Private m_TImageName As String
Public ReadOnly Property TImageName As String
Get
Return m_TImageName
End Get
End Property
Private m_TLuaScriptName As String
Public ReadOnly Property TLuaScriptName As String
Get
Return m_TLuaScriptName
End Get
End Property
Private m_FImageName As String
Public ReadOnly Property FImageName As String
Get
Return m_FImageName
End Get
End Property
Private m_FLuaScriptName As String
Public ReadOnly Property FLuaScriptName As String
Get
Return m_FLuaScriptName
End Get
End Property
Private m_StateFlag As String
Public ReadOnly Property StateFlag As String
Get
Return m_StateFlag
End Get
End Property
Sub New(TImagePath As String, TLuaScriptPath As String, FImagePath As String, FLuaScriptPath As String, StateFlag As String)
m_TImageName = TImagePath
m_TLuaScriptName = TLuaScriptPath
m_FImageName = FImagePath
m_FLuaScriptName = FLuaScriptPath
m_StateFlag = StateFlag
End Sub
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Sub NotifyPropertyChanged(propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
End Class
Public Class TwoStateButton
Inherits MachineButton
Private m_IsChecked As Boolean
Public Property IsChecked As Boolean
Get
Return m_IsChecked
End Get
Set(value As Boolean)
' accendo il comando, anche se dovrei aspettare di leggere lo stato da PLC
m_IsChecked = value
Dim sLuaScriptFile As String = m_MainWindow.m_CurrentMachine.sMachDir & "\DirectCmd\"
If value Then
sLuaScriptFile &= TLuaScriptName
ExecuteMDICommand(TLuaScriptName)
Else
sLuaScriptFile &= FLuaScriptName
ExecuteMDICommand(FLuaScriptName)
End If
Dim IsPressedShiftKey As Boolean = False
If (Keyboard.Modifiers And ModifierKeys.Shift) > 0 And
GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_MainWindow.GetIniFile()) > 4 Then IsPressedShiftKey = True
' procedo all'apertura del file CadCut1 appena generato (solo se generazione corretta)
If IsPressedShiftKey Then
Try
Process.Start("Notepad.exe", sLuaScriptFile)
Catch ex As Exception
EgtOutLog(ex.ToString)
End Try
End If
End Set
End Property
Friend Sub SetIsChecked(value As Boolean)
m_IsChecked = value
NotifyPropertyChanged("IsChecked")
NotifyPropertyChanged("ImageSource")
End Sub
Public ReadOnly Property ImageSource As String
Get
Dim sNewIcons As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
sNewIcons = ""
Else
sNewIcons = "NewIcons\"
End If
' Se variabile di stato "Nothing" o non collegato a CN, imposto immagine fissa
If StateFlag = BTN_STATE_NOTHING Or Not m_MainWindow.m_bNCLink Or IsNothing(FImageName) Or String.IsNullOrWhiteSpace(FImageName) Then
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
End If
If m_IsChecked Then
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
Else
' ritorno immagine dello stato false
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & FImageName
End If
End Get
End Property
#Region "METHODS"
Sub New(TImagePath As String, TLuaScriptPath As String, FImagePath As String, FLuaScriptPath As String, StateFlag As String)
MyBase.New(TImagePath, TLuaScriptPath, FImagePath, FLuaScriptPath, StateFlag)
End Sub
#End Region ' METHODS
End Class
Public Class NoStateButton
Inherits MachineButton
' definizione comandi
Private m_cmdExecute As ICommand
Public ReadOnly Property ImageSource As String
Get
Dim sNewIcons As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
sNewIcons = ""
Else
sNewIcons = "NewIcons\"
End If
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
End Get
End Property
#Region "METHODS"
Sub New(TImagePath As String, TLuaScriptPath As String, FImagePath As String, FLuaScriptPath As String, StateFlag As String)
MyBase.New(TImagePath, TLuaScriptPath, Nothing, Nothing, StateFlag)
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "Execute"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property ExecuteCommand() As ICommand
Get
If m_cmdExecute Is Nothing Then
m_cmdExecute = New Command(AddressOf Execute)
End If
Return m_cmdExecute
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub Execute()
If m_MainWindow.m_CNCommunication.m_nNCType = 1 Or m_MainWindow.m_CNCommunication.m_nNCType = 2 Then
If StateFlag = K_MANUAL Then
m_CN.DGeneralFunctions_WriteCncMode(7) ' Modalità manuale
Else
ExecuteMDICommand(TLuaScriptName)
End If
Else
' FANUC, SIEMENS
ExecuteMDICommand(TLuaScriptName)
End If
End Sub
#End Region ' Execute
#End Region ' COMMANDS
End Class
Public Class ThreeStateButton
Inherits MachineButton
' definizione comandi
Private m_cmdExecute As ICommand
Private m_Background As SolidColorBrush
Public Property Background As SolidColorBrush
Get
Return m_Background
End Get
Set(value As SolidColorBrush)
m_Background = value
NotifyPropertyChanged("Background")
End Set
End Property
Public ReadOnly Property ImageSource As String
Get
Dim sNewIcons As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
sNewIcons = ""
Else
sNewIcons = "NewIcons\"
End If
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
End Get
End Property
#Region "METHODS"
Sub New(TImagePath As String, TLuaScriptPath As String, FImagePath As String, FLuaScriptPath As String, StateFlag As String)
MyBase.New(TImagePath, TLuaScriptPath, FImagePath, FLuaScriptPath, StateFlag)
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "Execute"
' Returns a command that manage the MainWindow_Unloaded command
Public ReadOnly Property ExecuteCommand() As ICommand
Get
If m_cmdExecute Is Nothing Then
m_cmdExecute = New Command(AddressOf Execute)
End If
Return m_cmdExecute
End Get
End Property
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
Public Sub Execute()
ExecuteMDICommand(TLuaScriptName)
ExecuteMDICommand(FLuaScriptName)
End Sub
#End Region ' Execute
#End Region ' COMMANDS
End Class
Public Class DoubleCommandButton
Inherits MachineButton
Private m_IsChecked As Boolean
Public Property IsChecked As Boolean
Get
Return m_IsChecked
End Get
Set(value As Boolean)
m_IsChecked = value
ExecuteMDICommand(TLuaScriptName)
System.Threading.Thread.Sleep(100)
ExecuteMDICommand(FLuaScriptName)
End Set
End Property
Friend Sub SetIsChecked(value As Boolean)
m_IsChecked = value
NotifyPropertyChanged("IsChecked")
NotifyPropertyChanged("ImageSource")
End Sub
Public ReadOnly Property ImageSource As String
Get
Dim sNewIcons As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
sNewIcons = ""
Else
sNewIcons = "NewIcons\"
End If
' Se variabile di stato "Nothing" o non collegato a CN, imposto immagine fissa
If StateFlag = BTN_STATE_NOTHING Or Not m_MainWindow.m_bNCLink Or IsNothing(FImageName) Or String.IsNullOrWhiteSpace(FImageName) Then
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
End If
If m_IsChecked Then
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
Else
' ritorno immagine dello stato false
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & FImageName
End If
End Get
End Property
#Region "METHODS"
Sub New(TImagePath As String, TLuaScriptPath As String, FImagePath As String, FLuaScriptPath As String, StateFlag As String)
MyBase.New(TImagePath, TLuaScriptPath, FImagePath, FLuaScriptPath, StateFlag)
End Sub
#End Region ' METHODS
End Class
Public Class PressedCommandButton
Inherits MachineButton
Private m_IsPressed As Boolean
Friend Sub SetIsPressed(value As Boolean)
m_IsPressed = value
NotifyPropertyChanged("ImageSource")
End Sub
Public ReadOnly Property ImageSource As String
Get
Dim sNewIcons As String
If (m_MainWindow.m_OptionsPageUC.ThemesCmBx.SelectedIndex = 0) Then
sNewIcons = ""
Else
sNewIcons = "NewIcons\"
End If
' Se variabile di stato "Nothing" o non collegato a CN, imposto immagine fissa
If StateFlag = BTN_STATE_NOTHING OrElse Not m_MainWindow.m_bNCLink OrElse IsNothing(FImageName) OrElse String.IsNullOrWhiteSpace(FImageName) Then
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
End If
If m_IsPressed Then
' ritorno immagine dello stato true
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & TImageName
Else
' ritorno immagine dello stato false
Return m_MainWindow.GetResourcesDir() & "\MachineButtonsImage\" & sNewIcons & FImageName
End If
End Get
End Property
#Region "METHODS"
Sub New(TImagePath As String, TLuaScriptPath As String, FImagePath As String, FLuaScriptPath As String, StateFlag As String)
MyBase.New(TImagePath, TLuaScriptPath, FImagePath, FLuaScriptPath, StateFlag)
End Sub
Friend Sub OnMouseDown()
Try
ExecuteMDICommand(TLuaScriptName)
EgtOutLog("Comando MDI eseguito")
SetIsPressed(True)
EgtOutLog("Aggiornamento immagine bottone eseguito")
Catch ex As Exception
EgtOutLog("Eccezione riga 909 di ControlsMachineButtonUC.xaml.vb : " & ex.ToString)
End Try
End Sub
Friend Sub OnMouseUp()
Try
ExecuteMDICommand(FLuaScriptName)
EgtOutLog("Comando MDI eseguito")
SetIsPressed(False)
EgtOutLog("Aggiornamento immagine bottone eseguito")
Catch ex As Exception
EgtOutLog("Eccezione riga 925 di ControlsMachineButtonUC.xaml.vb : " & ex.ToString)
End Try
End Sub
#End Region ' METHODS
End Class