diff --git a/EgtBEAMWALL.ViewerOptimizer/Constants/ConstIni.vb b/EgtBEAMWALL.ViewerOptimizer/Constants/ConstIni.vb
index f8a35fde..f62aeddd 100644
--- a/EgtBEAMWALL.ViewerOptimizer/Constants/ConstIni.vb
+++ b/EgtBEAMWALL.ViewerOptimizer/Constants/ConstIni.vb
@@ -113,4 +113,7 @@ Module ConstIni
Public Const K_BEAMWALLBASEDIR As String = "BaseDir"
Public Const K_BEAMWALLBUTTON As String = "Button"
+ Public Const S_MRUPROJFILES As String = "MruProjFiles"
+ Public Const S_MRUPRODFILES As String = "MruProdFiles"
+
End Module
diff --git a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb
index db975ba9..475e3ae7 100644
--- a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb
+++ b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb
@@ -117,6 +117,16 @@ Public Class MainWindowVM
'Else
' Map.refProjectManagerVM.NewCmd()
End If
+ ' setto il primo file dalla lista degli MRU come progetto corrente da aprire
+ Dim sLastProjectPath As String = String.Empty
+ GetMainPrivateProfileString(S_MRUPROJFILES, K_FILE & "1", String.Empty, sLastProjectPath)
+ If Not String.IsNullOrWhiteSpace(sLastProjectPath) AndAlso File.Exists(sLastProjectPath) Then
+ ' ricavo l'Id e il progetto associato per l'apertura di quest'ultimo
+ Dim PjId As Integer = 0
+ Dim sPjId As String = Path.GetFileNameWithoutExtension(sLastProjectPath)
+ Integer.TryParse(sPjId, PjId)
+ Map.refProjManagerVM.SetCurrProj(PjId)
+ End If
' apro in modalita' VIEW
Map.refMainMenuVM.SelPage = Pages.VIEW
diff --git a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb
index 1cf968b0..0d57536f 100644
--- a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb
+++ b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb
@@ -274,7 +274,9 @@ Public Class OpenProjectFileDialogVM
MessageBox.Show(EgtMsg(61873), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
Return
End If
- ' cancello progetto da Db
+ Map.refProjManagerVM.m_MruFiles.Remove(SelProject.sProjPath)
+ Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
+ ' cancello progetto
DbControllers.m_ProjController.DeleteProj(SelProject.nProjId)
' cancello cartella del Proj
Try
@@ -300,6 +302,8 @@ Public Class OpenProjectFileDialogVM
MessageBox.Show(EgtMsg(61874), EgtMsg(30009), MessageBoxButton.OK, MessageBoxImage.Warning)
Return
End If
+ Map.refProdManagerVM.m_MruFiles.Remove(SelProject.sProdPath)
+ Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
' cancello progetto
DbControllers.m_ProdController.DeleteProd(SelProject.nProdId)
' riporto prod in proj
diff --git a/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerV.xaml b/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerV.xaml
index 8e17bfa2..8a23eed3 100644
--- a/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerV.xaml
+++ b/EgtBEAMWALL.ViewerOptimizer/ProdManager/ProdManagerV.xaml
@@ -13,6 +13,18 @@
ContextMenuService.Placement="Bottom"
Tag="{Binding}"
Style="{StaticResource ToolBar_Button}">
+
+
+
+
+
+
+
+
Friend Sub Open()
- OpenProject()
- End Sub
-
- Friend Sub OpenProject()
' verifico se progetto modificato, e chiedo se salvare
If Not ProdFileVM.VerifyProjectModification(CurrProd) Then Return
+ OpenProject(Nothing)
+ End Sub
+
+ Friend Sub OpenProject(TempCurrProd As ProdFileVM)
Dim sFilePath As String = ""
' se la string รจ vuota
- Dim TempCurrProd As ProdFileVM
Dim OpenProjectFileDialogVM As OpenProjectFileDialogVM = Nothing
- ' 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
+ If IsNothing(TempCurrProd) 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
+ sFilePath = If(Not IsNothing(TempCurrProd.sProdPath), TempCurrProd.sProdPath, "")
+ End If
If File.Exists(sFilePath) Then
If Map.refSceneHostVM.MainController.OpenProject(sFilePath, False) Then
m_CurrProd = TempCurrProd
@@ -167,10 +189,42 @@ Public Class ProdManagerVM
End If
' aggiorno titolo
Map.refMainWindowVM.UpdateTitle()
+ NotifyPropertyChanged(NameOf(MruFileNames))
End Sub
#End Region ' OpenCommand
+#Region "OpenMruFileCommand"
+
+ '''
+ ''' Returns a command that do Open.
+ '''
+ Public ReadOnly Property OpenMruFileCommand As ICommand
+ Get
+ If m_cmdOpenMruFile Is Nothing Then
+ m_cmdOpenMruFile = New Command(AddressOf OpenMruFile)
+ End If
+ Return m_cmdOpenMruFile
+ End Get
+ End Property
+
+ '''
+ ''' Execute the Open. This method is invoked by the OpenCommand.
+ '''
+ Public Sub OpenMruFile(ByVal param As Object)
+ ' verifico se progetto modificato, e chiedo se salvare
+ If Not ProdFileVM.VerifyProjectModification(CurrProd) Then Return
+ ' ricavo l'Id e il progetto associato per l'apertura di quest'ultimo
+ Dim PdId As Integer = 0
+ Dim arrStrPdId As String() = DirectCast(param, String).Split("|")
+ Integer.TryParse(arrStrPdId(0), PdId)
+ Dim PdFileM = DbControllers.m_ProdController.FindCoreByProdId(PdId)
+ Dim PdFileVM = New ProdFileVM(PdFileM)
+ OpenProject(PdFileVM)
+ End Sub
+
+#End Region ' OpenMruFileCommand
+
#Region "SaveCommand"
'''
@@ -206,6 +260,7 @@ Public Class ProdManagerVM
' DbControllers.m_ProdController.Reset(CurrProd.nProjId)
m_CurrProd.bIsNew = False
End If
+ NotifyPropertyChanged(NameOf(MruFileNames))
End Sub
#End Region ' SaveCommand
diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml
index ff8f60bc..dff31c99 100644
--- a/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml
+++ b/EgtBEAMWALL.ViewerOptimizer/ProjManager/ProjManagerV.xaml
@@ -15,7 +15,20 @@
+
+
+
+
+
+
+
+ ''' Returns a command that do Open.
+ '''
+ Public ReadOnly Property OpenMruFileCommand As ICommand
+ Get
+ If m_cmdOpenMruFile Is Nothing Then
+ m_cmdOpenMruFile = New Command(AddressOf OpenMruFile)
+ End If
+ Return m_cmdOpenMruFile
+ End Get
+ End Property
+
+ '''
+ ''' Execute the Open. This method is invoked by the OpenCommand.
+ '''
+ Public Sub OpenMruFile(ByVal param As Object)
+ ' verifico se progetto modificato, e chiedo se salvare
+ If Not ProjFileVM.VerifyProjectModification(CurrProj, ProjectType.PROJ) Then Return
+ ' ricavo l'Id e il progetto associato per l'apertura di quest'ultimo
+ Dim PjId As Integer = 0
+ Dim arrStrPjId As String() = DirectCast(param, String).Split("|")
+ Integer.TryParse(arrStrPjId(0), PjId)
+ Dim PjFileM = DbControllers.m_ProjController.FindByProjIdConv(PjId)
+ Dim PjFileVM = New ProjFileVM(PjFileM)
+ OpenProject(PjFileVM)
+ End Sub
+
+#End Region ' OpenMruFileCommand
+
#Region "SaveCommand"
'''
@@ -366,6 +416,7 @@ Public Class ProjManagerVM
If bShowBuilding Then Map.refProjectVM.BTLStructureVM.ShowBuilding(True, False)
' aggiorno titolo
Map.refMainWindowVM.UpdateTitle()
+ NotifyPropertyChanged(NameOf(MruFileNames))
End Sub
#End Region ' SaveCommand
diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb
index 2aa748a4..8cd02f01 100644
--- a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb
+++ b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProdFileVM.vb
@@ -214,6 +214,8 @@ Public Class ProdFileVM
If CurrProject.bIsNew Then
' lo elimino
Directory.Delete(sProjectDirPath, True)
+ Map.refProdManagerVM.m_MruFiles.Remove(CurrProject.sProdPath)
+ Map.refProdManagerVM.NotifyPropertyChanged(NameOf(Map.refProdManagerVM.MruFileNames))
DbControllers.m_ProdController.DeleteProd(CurrProject.nProdId)
If CurrProject.nProdId = Map.refProjManagerVM.CurrProj.nProdId Then
' reset prod in path proj
diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb
index 4d2e1cab..32798f73 100644
--- a/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb
+++ b/EgtBEAMWALL.ViewerOptimizer/ProjectManager/ProjFileVM.vb
@@ -230,6 +230,8 @@ Public Class ProjFileVM
If Directory.Exists(sProjectDirPath) Then
Directory.Delete(sProjectDirPath, True)
End If
+ Map.refProjManagerVM.m_MruFiles.Remove(CurrProject.sProjPath)
+ Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames))
DbControllers.m_ProjController.DeleteProj(CurrProject.nProjId)
Map.refProjManagerVM.CurrProj = Nothing
EgtResetModified()
diff --git a/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb b/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb
index 6d40ff59..23b7443c 100644
--- a/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb
+++ b/EgtBEAMWALL.ViewerOptimizer/SceneHost/MySceneHostVM.vb
@@ -482,11 +482,11 @@ Public Class MySceneHostVM
End Sub
Private Sub OnOpenProject(sender As Object, sFile As String, bOk As Boolean)
+ Dim ProjectType As ProjectType = If(Map.refMainMenuVM.SelPage = Pages.VIEW, ProjectType.PROJ, ProjectType.PROD)
+ Dim ProjId As Integer = If(ProjectType = ProjectType.PROJ, Map.refProjManagerVM.nLoadingProjId, 0)
' Procedo a seconda del risultato
If bOk Then
' leggo struttura BTL
- Dim ProjectType As ProjectType = If(Map.refMainMenuVM.SelPage = Pages.VIEW, ProjectType.PROJ, ProjectType.PROD)
- Dim ProjId As Integer = If(ProjectType = ProjectType.PROJ, Map.refProjManagerVM.nLoadingProjId, 0)
Map.refProjectVM.BTLStructureVM = New BTLStructureVM(BTLStructureM.CreateBTLStructure(ProjId))
If Map.refMainMenuVM.SelPage = Pages.MACHINING Then
Map.refProjectVM.MachGroupPanelVM = New MyMachGroupPanelVM(MyMachGroupPanelM.CreateMyMachGroupPanel(Map.refMachinePanelVM.MachineList.ToList()))
@@ -495,7 +495,23 @@ Public Class MySceneHostVM
Map.refShowBeamPanelVM.ShowAll()
End If
WriteMainPrivateProfileString(S_GENERAL, K_LASTPROJ, sFile)
+ If ProjectType = ProjectType.PROJ Then
+ Dim PjFileVM As ProjFileVM
+ If Not IsNothing(ProjId) AndAlso ProjId <> 0 Then
+ PjFileVM = New ProjFileVM(DbControllers.m_ProjController.FindByProjIdConv(ProjId))
+ If Not IsNothing(PjFileVM.ProjFileM) AndAlso Not IsNothing(PjFileVM.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Add(PjFileVM.sProjPath)
+ End If
+ End If
+ If ProjectType = ProjectType.PROD Then Map.refProdManagerVM.m_MruFiles.Add(sFile)
Else
+ If ProjectType = ProjectType.PROJ Then
+ Dim PjFileVM As ProjFileVM
+ If Not IsNothing(ProjId) AndAlso ProjId <> 0 Then
+ PjFileVM = New ProjFileVM(DbControllers.m_ProjController.FindByProjIdConv(ProjId))
+ If Not IsNothing(PjFileVM.ProjFileM) AndAlso Not IsNothing(PjFileVM.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Remove(PjFileVM.sProjPath)
+ End If
+ End If
+ If ProjectType = ProjectType.PROD Then Map.refProdManagerVM.m_MruFiles.Remove(sFile)
Dim sMsg As String = EgtMsg(10003) & " '" & sFile & "'" 'Error opening file
MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) 'Error
Map.refProjManagerVM.NewProject()
@@ -510,12 +526,31 @@ Public Class MySceneHostVM
End Sub
Private Sub OnSavedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean)
+ Dim ProjectType As ProjectType = If(Map.refMainMenuVM.SelPage = Pages.VIEW, ProjectType.PROJ, ProjectType.PROD)
+ Dim ProjId As Integer = If(ProjectType = ProjectType.PROJ, Map.refProjManagerVM.nLoadingProjId, 0)
' Se salvataggio non riuscito, esco subito
If Not bOk Then
+ If ProjectType = ProjectType.PROJ Then
+ Dim PjFileVM As ProjFileVM
+ If Not IsNothing(ProjId) AndAlso ProjId <> 0 Then
+ PjFileVM = New ProjFileVM(DbControllers.m_ProjController.FindByProjIdConv(ProjId))
+ If Not IsNothing(PjFileVM.ProjFileM) AndAlso Not IsNothing(PjFileVM.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Remove(PjFileVM.sProjPath)
+ End If
+ End If
+ If ProjectType = ProjectType.PROD Then Map.refProdManagerVM.m_MruFiles.Remove(sFile)
Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file
MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) ' Error
Return
End If
+ ' Inserisco nome in MRU
+ If ProjectType = ProjectType.PROJ Then
+ Dim PjFileVM As ProjFileVM
+ If Not IsNothing(ProjId) AndAlso ProjId <> 0 Then
+ PjFileVM = New ProjFileVM(DbControllers.m_ProjController.FindByProjIdConv(ProjId))
+ If Not IsNothing(PjFileVM.ProjFileM) AndAlso Not IsNothing(PjFileVM.sProjPath) Then Map.refProjManagerVM.m_MruFiles.Add(PjFileVM.sProjPath)
+ End If
+ End If
+ If ProjectType = ProjectType.PROD Then Map.refProdManagerVM.m_MruFiles.Add(sFile)
' Salvo nome ultimo file
WriteMainPrivateProfileString(S_GENERAL, K_LASTPROJ, sFile)
End Sub