234 lines
9.1 KiB
VB.net
234 lines
9.1 KiB
VB.net
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
Imports System.IO
|
|
Imports System.Threading
|
|
Imports System.Windows.Threading
|
|
|
|
Public Class MainWindowVM
|
|
Inherits VMBase
|
|
|
|
' Riferimento al Model della MainWindow
|
|
Private m_MainWindowM As MainWindowM
|
|
Friend ReadOnly Property MainWindowM As MainWindowM
|
|
Get
|
|
Return m_MainWindowM
|
|
End Get
|
|
End Property
|
|
|
|
' Funzioni di callback per output in interfaccia da LUA
|
|
Private m_ProcEventsCallback As New ProcessEventsCallback(AddressOf ProcessEvents)
|
|
|
|
' Variabile che indica che il programma è stato avviato correttamente (sia la mappa che l'ambiente Egt)
|
|
Private m_bInitStatus As Boolean
|
|
Friend ReadOnly Property bInitStatus As Boolean
|
|
Get
|
|
Return m_bInitStatus
|
|
End Get
|
|
End Property
|
|
|
|
' Titolo
|
|
Public ReadOnly Property sTitle As String
|
|
Get
|
|
Return "Icarus"
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sProjectName As String
|
|
Get
|
|
Dim sFilePath As String = ""
|
|
EgtGetCurrFilePath(sFilePath)
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
sFilePath = EgtMsg(MSG_TOPCOMMANDBAR + 1) & Map.refMainWindowVM.MainWindowM.nInstance.ToString()
|
|
Return sFilePath
|
|
Else
|
|
Return Path.GetFileNameWithoutExtension(sFilePath) & If(EgtGetModified(), "*", "")
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property sProjectPath As String
|
|
Get
|
|
Dim sFilePath As String = ""
|
|
EgtGetCurrFilePath(sFilePath)
|
|
If String.IsNullOrEmpty(sFilePath) Then
|
|
sFilePath = EgtMsg(MSG_TOPCOMMANDBAR + 1) & Map.refMainWindowVM.MainWindowM.nInstance.ToString()
|
|
End If
|
|
Return sFilePath
|
|
End Get
|
|
End Property
|
|
|
|
Private m_MachinePanelVM As MachinePanelVM
|
|
Public ReadOnly Property MachinePanelVM As MachinePanelVM
|
|
Get
|
|
Return m_MachinePanelVM
|
|
End Get
|
|
End Property
|
|
|
|
' definizione comandi
|
|
Private m_cmdAboutBox As ICommand
|
|
Private m_cmdCloseApplication As ICommand
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM
|
|
Map.BeginInit(Me)
|
|
' Creo Model della MainWindow
|
|
m_MainWindowM = New MainWindowM
|
|
' inizializzo machine panel
|
|
m_MachinePanelVM = New MachinePanelVM
|
|
' Installo funzione gestione eventi per lua
|
|
EgtSetProcessEvents(m_ProcEventsCallback)
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
'#Region "METHODS"
|
|
|
|
Friend Sub ContentRendered()
|
|
|
|
End Sub
|
|
|
|
Friend Sub KeyDown(PressedKey As Key)
|
|
' Con ESC esco dall'azione corrente
|
|
If PressedKey = Key.Escape Then
|
|
' resetto sempre input box a meno che non sia nelle ribs e stia creando il percorso
|
|
If Not (Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
|
|
Not IsNothing(Map.refTopPanelVM.SelModifyMode) AndAlso
|
|
((Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.RIBS AndAlso Map.refRibPanelVM.bIsCreatingPath) OrElse
|
|
(Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.SHELLNUMBER AndAlso Map.refShellNumberPanelVM.bIsCreatingPath))) Then
|
|
Map.refControllerInputPanelVM.ResetInputBox()
|
|
End If
|
|
If Not IsNothing(Map.refTopPanelVM.SelPage) AndAlso Map.refTopPanelVM.SelPage = Pages.MODIFY AndAlso
|
|
Not IsNothing(Map.refTopPanelVM.SelModifyMode) Then
|
|
Dim nNewExtrusionLayerId As Integer = GDB_ID.NULL
|
|
If Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.RIBS Then
|
|
' cancello eventuali layer di modifica
|
|
If Not IsNothing(Map.refTopPanelVM.SelPart) AndAlso Not Map.refRibPanelVM.bIsCreatingPath Then
|
|
nNewExtrusionLayerId = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWEXTRUSION)
|
|
If nNewExtrusionLayerId <> GDB_ID.NULL Then
|
|
EgtErase(nNewExtrusionLayerId)
|
|
End If
|
|
Dim nNewRibLayerId As Integer = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWRIB)
|
|
If nNewRibLayerId <> GDB_ID.NULL Then
|
|
EgtErase(nNewRibLayerId)
|
|
End If
|
|
End If
|
|
' annullo trasparenza attivata durante edit rib
|
|
If Not IsNothing(Map.refRibPanelVM.SelRib) Then
|
|
'EgtSetAlpha(Map.refRibPanelVM.SelRib.nExtrusionId, 100)
|
|
End If
|
|
ElseIf Map.refTopPanelVM.SelModifyMode.ModifyMode = ModifyModes.SHELLNUMBER Then
|
|
' cancello eventuali layer di modifica
|
|
If Not IsNothing(Map.refTopPanelVM.SelPart) AndAlso Not Map.refShellNumberPanelVM.bIsCreatingPath Then
|
|
nNewExtrusionLayerId = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWEXTRUSION)
|
|
If nNewExtrusionLayerId <> GDB_ID.NULL Then
|
|
EgtErase(nNewExtrusionLayerId)
|
|
End If
|
|
Dim nNewRibLayerId As Integer = EgtGetFirstNameInGroup(Map.refTopPanelVM.SelPart.nPartId, LAY_NEWRIB)
|
|
If nNewRibLayerId <> GDB_ID.NULL Then
|
|
EgtErase(nNewRibLayerId)
|
|
End If
|
|
End If
|
|
' annullo trasparenza attivata durante edit rib
|
|
If Not IsNothing(Map.refShellNumberPanelVM.SelShellNumber) Then
|
|
'EgtSetAlpha(Map.refShellNumberPanelVM.SelShellNumber.nExtrusionId, 100)
|
|
End If
|
|
End If
|
|
End If
|
|
' reset Azione corrente
|
|
Map.refSceneHostVM.MainController.ResetStatus()
|
|
' se misura attiva, la disattivo
|
|
If Map.refInstrumentPanelVM.GetDistIsChecked Then
|
|
Map.refInstrumentPanelVM.SetGetDistance_IsChecked(False)
|
|
End If
|
|
' pulisco output
|
|
Map.refMyStatusBarVM.ClearOutputMessage()
|
|
End If
|
|
End Sub
|
|
|
|
Private Function ProcessEvents(ByVal nProg As Integer, ByVal nPause As Integer) As Integer
|
|
If Map.refSliceManagerVM.bCalculating OrElse Map.refSliceManagerVM.bCalcSolid Then
|
|
Map.refSliceManagerVM.ProcessEvents(nProg, nPause)
|
|
End If
|
|
If Not IsNothing(Map.refImportLoadingWndVM) Then
|
|
Map.refImportLoadingWndVM.ProcessEvents(nProg, nPause)
|
|
End If
|
|
Map.refMyStatusBarVM.ProcessEvents(nProg, nPause)
|
|
Return 0
|
|
End Function
|
|
|
|
Friend Sub CloseApplication()
|
|
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
|
|
Return
|
|
End If
|
|
' gestisco la chiusura della simulazione
|
|
If Map.refRightPanelVM.SelPanel = RightPanelVM.Panels.SIMULATION AndAlso Not IsNothing(Map.refSimulationPanelVM) Then
|
|
Map.refSimulationPanelVM.MySimul.ResetSimulation()
|
|
End If
|
|
Dim bAllowClose As Boolean = Map.refSceneHostVM.ManageModified()
|
|
' Se non confermata chiusura, esco
|
|
If Not bAllowClose Then Return
|
|
' salvo modo di visualizzazione
|
|
WriteMainPrivateProfileString(S_SCENE, K_SHOWMODE, EgtGetShowMode().ToString())
|
|
' Salvo stato visualizzazione direzione curve
|
|
WriteMainPrivateProfileString(S_SCENE, K_CURVEDIR, If(EgtGetShowCurveDirection(), "1", "0"))
|
|
' Salvo stato visualizzazione griglia
|
|
WriteMainPrivateProfileString(S_GRID, K_SHOWGRID, If(Map.refMyStatusBarVM.bGridVisibility, "1", "0"))
|
|
' Termino il Model
|
|
m_MainWindowM.Close()
|
|
' Termino il programma
|
|
Application.Current.Shutdown()
|
|
End Sub
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "AboutBoxCommand"
|
|
|
|
' Returns a command that manage the MainWindow_Unloaded command
|
|
Public ReadOnly Property AboutBoxCommand() As ICommand
|
|
Get
|
|
If m_cmdAboutBox Is Nothing Then
|
|
m_cmdAboutBox = New Command(AddressOf AboutBox)
|
|
End If
|
|
Return m_cmdAboutBox
|
|
End Get
|
|
End Property
|
|
|
|
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
|
|
Public Sub AboutBox(ByVal param As Object)
|
|
Dim AboutBoxWindow As New AboutBoxV
|
|
AboutBoxWindow.Owner = Application.Current.MainWindow
|
|
AboutBoxWindow.ShowDialog()
|
|
End Sub
|
|
|
|
#End Region ' AboutBoxCommand
|
|
|
|
#Region "CloseApplicationCommand"
|
|
|
|
' Returns a command that manage the MainWindow_Unloaded command
|
|
Public ReadOnly Property CloseApplicationCommand() As ICommand
|
|
Get
|
|
If m_cmdCloseApplication Is Nothing Then
|
|
m_cmdCloseApplication = New Command(AddressOf CloseApplication)
|
|
End If
|
|
Return m_cmdCloseApplication
|
|
End Get
|
|
End Property
|
|
|
|
' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded.
|
|
Public Sub CloseApplication(ByVal param As Object)
|
|
If Map.refSliceManagerVM.bCalculating Then
|
|
'MessageBox.Show("Impossible closing software! Wait end of calculation!", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
|
|
EgtMessageBoxV.Show(Application.Current.MainWindow, "Impossible closing software! Wait end of calculation!", "Error", MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return
|
|
End If
|
|
CloseApplication()
|
|
End Sub
|
|
|
|
#End Region ' CloseApplicationCommand
|
|
|
|
#End Region ' COMMANDS
|
|
|
|
End Class
|