diff --git a/DdfFile.vb b/DdfFile.vb index 6bd790b..2c6e976 100644 --- a/DdfFile.vb +++ b/DdfFile.vb @@ -30,6 +30,9 @@ Friend Module DdfFile Dim DdfFileContent As New List(Of String) ' quindi significa che non è mai stato caricato il valore DdfFileContent.Add("#EGTDOORCREATOR") + ' inserisco il nome utente + Dim NomeUtente As String = Environment.MachineName & "/" & Environment.UserName + DdfFileContent.Add("#UserName: " & NomeUtente) ' inserisco la configurazione usata Dim Config As String = IniFile.m_sDoorsDirPath Config = Path.GetFileName(Config) diff --git a/ProjectManager/ProjectManagerVM.vb b/ProjectManager/ProjectManagerVM.vb index df54fdc..eaa9dbf 100644 --- a/ProjectManager/ProjectManagerVM.vb +++ b/ProjectManager/ProjectManagerVM.vb @@ -317,8 +317,10 @@ Public Class ProjectManagerVM ' apro la finestra di dialogo If saveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then If Utility.VerifyFileLocked(Path.GetDirectoryName(saveFileDialog1.FileName), Path.GetFileNameWithoutExtension(saveFileDialog1.FileName)) Then - Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) - Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) + If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then + Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) + Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) + End If Return End If Utility.OutLog("Creazione nuovo progetto : " & saveFileDialog1.FileName) @@ -734,7 +736,7 @@ Public Class ProjectManagerVM For DDFIndex = 0 To DDFFileArray.Count - 1 ' verifico che il file sia un ddf e non sia in lettura - se il file che trovo è in lettura restituisce un messaggio !! da togliere !! If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" And - Not Utility.VerifyFileLocked(Path.GetDirectoryName(DDFFileArray(DDFIndex)), DDFFileArray(DDFIndex), False) Then + Not Utility.VerifyFileLocked(Path.GetDirectoryName(DDFFileArray(DDFIndex)), Path.GetFileNameWithoutExtension(DDFFileArray(DDFIndex)), False) Then OptionModule.m_sLastProject = DDFFileArray(DDFIndex) Local_Assembly.Name = OptionModule.m_sLastProject Local_Assembly.IsModified = False @@ -751,6 +753,7 @@ Public Class ProjectManagerVM If Utility.VerifyFileLocked(CurrProject.Name) Then Utility.OutLog("Annullata apertura ultimo progetto : " & CurrProject.Name) Map.refMainWindowVM.AssemblyManagerControl.Visibility = Visibility.Collapsed + Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected Return End If '------------------------------------------------------------------------------------------------- @@ -1204,6 +1207,7 @@ Public Class ProjectManagerVM ' se decido di annullare l'operazione di salvataggio If Not Map.refAssemblyManagerVM.ManageModified() Then Return Utility.OutLog(" +++ HardwarePage +++") + Utility.UnLockDir() ' prima di continuare salvo il riferimento all'ultima cartella aperta Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nHardwarePage ' nascondo la visibilità del bottone goback dalla lista dei bottoni diff --git a/Utility.vb b/Utility.vb index a7f8de8..bf37fdd 100644 --- a/Utility.vb +++ b/Utility.vb @@ -21,6 +21,10 @@ Public Module Utility ' CurrFile deve arrivare già senza estensione! Private Function CrateFileLock(ByVal CurrDirectory As String, Optional ByVal CurrFile As String = "") As String + ' eseguo comunque un controllo sul nome del file che ricevo + If CurrFile.EndsWith(DDF_EXTENSION) Then + CurrFile.Replace(DDF_EXTENSION, "") + End If Dim sLockFile As String = CurrDirectory & "\Lock_Project.txt" If Not String.IsNullOrEmpty(CurrFile) Then sLockFile = CurrDirectory & "\Lock_Project_" & CurrFile & ".txt" @@ -35,7 +39,18 @@ Public Module Utility If OptionModule.m_SingleDoor Then If SendMsg Then ' file in reading by another EgtDOORCreator. - Dim sMsg As String = String.Format(EgtMsg(50524), sLockFile) + Dim sCurrDDFFile As String = CurrDirectory & "\" & CurrFile & DDF_EXTENSION + Dim Item As String() = {"", ""} + If File.Exists(sCurrDDFFile) Then + Dim sLines As String() = File.ReadAllLines(sCurrDDFFile) + For Each Line In sLines + If Line.Contains("#UserName: ") Then + Item = Line.Split(":"c) + Exit For + End If + Next + End If + Dim sMsg As String = String.Format(EgtMsg(50524), sLockFile, Item(1)) MessageBox.Show(sMsg, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk) End If OutLog("File in reading : " & sLockFile) @@ -69,8 +84,8 @@ Public Module Utility 'If VerifyFileLocked(CurrDirectory, CurrFile) Then Return False Map.refMainWindowVM.AssemblyManagerControl.Visibility = Visibility.Visible Try - Dim NomeUtente As String = Environment.MachineName & "/" & Environment.UserName - File.WriteAllText(sLockFile, NomeUtente, Text.Encoding.UTF8) + 'Dim NomeUtente As String = Environment.MachineName & "/" & Environment.UserName + 'File.WriteAllText(sLockFile, NomeUtente, Text.Encoding.UTF8) 'File.Open(sLockFile, FileMode.Open) 'File.SetAccessControl(sLockFile, System.Security.AccessControl.FileSecur) FileSystem.FileOpen(1, sLockFile, OpenMode.Binary)