Files
egtbeamwall/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerVM.vb
T
Emmanuele Sassi 268f7c412f Corretto Proj in Part
Aggiornamenti per gestione Prod
2021-03-05 18:32:45 +01:00

233 lines
7.6 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.IO
Imports EgtUILib
Imports EgtWPFLib5
Public Class ProdManagerVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private m_CurrProd As ProjectFile
Friend Property CurrProd As ProjectFile
Get
Return m_CurrProd
End Get
Set(value As ProjectFile)
m_CurrProd = value
End Set
End Property
' indice ultimo progetto
Private m_nLastProdId As Integer
Friend ReadOnly Property nLastProdId As Integer
Get
Return m_nLastProdId
End Get
End Property
' Definizione comandi
Private m_cmdOpen As ICommand
Private m_cmdSave As ICommand
Private m_cmdGoToProj As ICommand
#Region "ToolTip"
'Proprietà ToolTip
Public ReadOnly Property OpenToolTip As String
Get
Return EgtMsg(MSG_TOPCOMMANDBAR + 2)
End Get
End Property
Public ReadOnly Property SaveToolTip As String
Get
Return EgtMsg(MSG_TOPCOMMANDBAR + 3)
End Get
End Property
#End Region ' ToolTip
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
' Creo riferimento a questa classe in Map
Map.SetRefProdManagerVM(Me)
' Leggo ultimo indice di progetto
m_nLastProdId = GetMainPrivateProfileInt(S_GENERAL, K_PRODSINDEX, 1)
End Sub
#End Region ' CONSTRUCTOR
#Region "COMMANDS"
#Region "OpenCommand"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property OpenCommand As ICommand
Get
If m_cmdOpen Is Nothing Then
m_cmdOpen = New Command(AddressOf Open)
End If
Return m_cmdOpen
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub Open()
OpenProject(String.Empty)
End Sub
Friend Sub OpenProject(sFilePath As String)
' verifico se progetto modificato, e chiedo se salvare
ProjectFile.VerifyProjectModification(CurrProd, ProjectType.PROD)
' se la string è vuota
Dim TempCurrProd As ProjectFile
Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing
If String.IsNullOrEmpty(sFilePath) Then
' apro dialogo di scelta file
OpenProjectFileDialogVM = New OpenProjectFileDialogVM
Dim OpenFile As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM)
Dim DialogResult As Boolean? = OpenFile.EgtShowDialog(ProjectType.PROD)
If IsNothing(DialogResult) OrElse Not DialogResult Then Return
sFilePath = OpenProjectFileDialogVM.SelProject.sProdPath
TempCurrProd = OpenProjectFileDialogVM.SelProject
Else
Dim nProjId As Integer = 0
Dim nProdId As Integer = 0
Dim sBTLFileName As String = ""
If ProjectFile.VerifyProjectFile(ProjectType.PROD, Path.GetFileNameWithoutExtension(sFilePath), nProjId, nProdId, sBTLFileName) Then
TempCurrProd = New ProjectFile(ProjectType.PROD, nProjId, nProdId, sBTLFileName)
Else
MessageBox.Show("Error in file name!!")
Return
End If
End If
If File.Exists(sFilePath) Then
If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then
If Map.refMachGroupPanelVM.InitMachGroupList() Then
m_CurrProd = TempCurrProd
Map.refMainWindowVM.SetTitle(CurrProd.nProdId.ToString("0000") & " - EgtBEAMWALL")
Else
MessageBox.Show("Impossibile aprire gruppi di lavorazione del file!!")
Map.refSceneHostVM.MainController.NewProject()
Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL")
End If
Else
MessageBox.Show("Impossibile aprire il file!!")
Map.refSceneHostVM.MainController.NewProject()
Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL")
End If
Else
MessageBox.Show("File non trovato!!")
Map.refSceneHostVM.MainController.NewProject()
Map.refMainWindowVM.SetTitle("New - EgtBEAMWALL")
End If
End Sub
#End Region ' OpenCommand
#Region "SaveCommand"
''' <summary>
''' Returns a command that do Save.
''' </summary>
Public ReadOnly Property SaveCommand As ICommand
Get
If m_cmdSave Is Nothing Then
m_cmdSave = New Command(AddressOf Save)
End If
Return m_cmdSave
End Get
End Property
''' <summary>
''' Execute the Save. This method is invoked by the SaveCommand.
''' </summary>
Public Sub Save()
Map.refSceneHostVM.SaveProject()
Map.refMainWindowVM.SetTitle(CurrProd.nProdId.ToString("0000") & " - EgtBEAMWALL")
'DbControllers.m_ProdController.up
' se nuovo progetto, incremento l'indice di progetto
If m_CurrProd.NewProd Then
m_nLastProdId = m_nLastProdId + 1
WriteMainPrivateProfileString(S_GENERAL, K_PRODSINDEX, (m_nLastProdId).ToString())
m_CurrProd.NewProd = False
End If
End Sub
#End Region ' SaveCommand
#Region "GoToProj"
''' <summary>
''' Returns a command that do Open.
''' </summary>
Public ReadOnly Property GoToProj_Command As ICommand
Get
If m_cmdGoToProj Is Nothing Then
m_cmdGoToProj = New Command(AddressOf GoToProj)
End If
Return m_cmdGoToProj
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Friend Sub GoToProj()
' verifico se salvare progetto corrente
ProjectFile.VerifyProjectModification(Map.refProdManagerVM.CurrProd, ProjectType.PROD)
' cerco proj associato
Dim ProjList As New List(Of ProjectFile)
Dim AllDirsInDir As IEnumerable(Of String) = IO.Directory.EnumerateDirectories(Map.refMainWindowVM.MainWindowM.sProjsDir)
For Each Directory In AllDirsInDir
Dim AllFilesInDir As IEnumerable(Of String) = IO.Directory.EnumerateFiles(Directory)
For Each File In AllFilesInDir
If Path.GetExtension(File).ToLower() = ".nge" Then
If File.Contains(FILENAMESEPARATOR) Then
Dim DataFromFileName As String() = File.Split(FILENAMESEPARATOR)
If DataFromFileName.Count = 3 Then
If Not String.IsNullOrEmpty(DataFromFileName(1)) Then
Dim nTempProdId As Integer = 0
Integer.TryParse(DataFromFileName(1), nTempProdId)
If nTempProdId = CurrProd.nProdId Then
ProjList.Add(New ProjectFile(ProjectType.PROJ, Path.GetFileNameWithoutExtension(File)))
End If
End If
End If
End If
End If
Next
Next
If ProjList.Count = 0 Then Return
' se c'è più di un proj
Dim Proj As ProjectFile
If ProjList.Count > 1 Then
' apro dialogo di scelta file
Dim OpenProjectFileDialogVM As New OpenProjectFileDialogVM
Dim OpenFile As New OpenProjectFileDialogV(Application.Current.MainWindow, OpenProjectFileDialogVM)
Dim DialogResult As Boolean? = OpenFile.EgtShowDialog(ProjectType.PROJ, ProjList)
If IsNothing(DialogResult) OrElse Not DialogResult Then Return
Proj = OpenProjectFileDialogVM.SelProject
Else
Proj = ProjList(0)
End If
' apro progetto proj
Map.refProjManagerVM.CurrProj = Proj
' vado in pagina prod
Map.refMainMenuVM.SetSelPage(Pages.VIEW, False)
End Sub
#End Region ' GoToProj
#End Region ' Commands
End Class