diff --git a/AssemblyManager/AssemblyManagerV.xaml b/AssemblyManager/AssemblyManagerV.xaml
index 9d02a30..c8a6254 100644
--- a/AssemblyManager/AssemblyManagerV.xaml
+++ b/AssemblyManager/AssemblyManagerV.xaml
@@ -10,9 +10,9 @@
-
+
+ Visibility="{Binding VisibilityDoorList}">
diff --git a/AssemblyManager/AssemblyManagerVM.vb b/AssemblyManager/AssemblyManagerVM.vb
index cb95f14..ef60ba5 100644
--- a/AssemblyManager/AssemblyManagerVM.vb
+++ b/AssemblyManager/AssemblyManagerVM.vb
@@ -24,6 +24,7 @@ Public Class AssemblyManagerVM
End Get
Set(value As Visibility)
m_VisibilityDoorList = value
+ NotifyPropertyChanged("VisibilityDoorList")
End Set
End Property
diff --git a/ProjectManager/ProjectManagerVM.vb b/ProjectManager/ProjectManagerVM.vb
index eaa9dbf..4077072 100644
--- a/ProjectManager/ProjectManagerVM.vb
+++ b/ProjectManager/ProjectManagerVM.vb
@@ -730,23 +730,22 @@ Public Class ProjectManagerVM
Local_Assembly.IsModified = False
CurrProject.AssemblyList.Add(Local_Assembly)
Else
- ' Aggiungo il primo nome all'elenco
- Dim DDFFileArray() As String = Directory.GetFiles(CurrProject.Name)
- Utility.OutLog("Cerco il primo file disponibile nel progetto : " & CurrProject.Name)
- 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)), Path.GetFileNameWithoutExtension(DDFFileArray(DDFIndex)), False) Then
- OptionModule.m_sLastProject = DDFFileArray(DDFIndex)
- Local_Assembly.Name = OptionModule.m_sLastProject
- Local_Assembly.IsModified = False
- CurrProject.AssemblyList.Add(Local_Assembly)
- Exit For
- End If
- Next
+ '' Aggiungo il primo nome all'elenco
+ 'Dim DDFFileArray() As String = Directory.GetFiles(CurrProject.Name)
+ 'Utility.OutLog("Cerco il primo file disponibile nel progetto : " & CurrProject.Name)
+ '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)), Path.GetFileNameWithoutExtension(DDFFileArray(DDFIndex)), False) Then
+ ' OptionModule.m_sLastProject = DDFFileArray(DDFIndex)
+ ' Local_Assembly.Name = OptionModule.m_sLastProject
+ ' Local_Assembly.IsModified = False
+ ' CurrProject.AssemblyList.Add(Local_Assembly)
+ ' Exit For
+ ' End If
+ 'Next
End If
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
-
Else
'-------------------------------------------------------------------------------------------------
' se esiste un file in lettura con questo nome allora blocco tutto
diff --git a/Utility.vb b/Utility.vb
index 3e4391a..ae84031 100644
--- a/Utility.vb
+++ b/Utility.vb
@@ -10,6 +10,7 @@ Public Module Utility
Dim m_CurrLockFile As String
Dim m_bIsLock As Boolean = False
Dim m_StopSaving As Boolean = False
+ Dim m_nIndexLockFile As Integer = -1
Public ReadOnly Property StopSaving As Boolean
Get
@@ -20,32 +21,53 @@ Public Module Utility
#Region "Blocca file/progetto"
' 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, "")
+ Private Function GenerateLockFileName(ByVal CurrDirectory As String, Optional ByVal CurrFile As String = "") As String
+ ' per bloccare il direttorio
+ If String.IsNullOrEmpty(CurrFile) Then
+ Return CurrDirectory & "\Lock_Project.lck"
+
+ ' per blocccare il file
+ Else
+ If CurrFile.EndsWith(DDF_EXTENSION) Then
+ CurrFile.Replace(DDF_EXTENSION, "")
+ End If
+ Return CurrDirectory & "\Lock_" & CurrFile & ".lck"
End If
- Dim sLockFile As String = CurrDirectory & "\Lock_Project.txt"
- If Not String.IsNullOrEmpty(CurrFile) Then
- sLockFile = CurrDirectory & "\Lock_Project_" & CurrFile & ".txt"
- End If
- Return sLockFile
+
End Function
Public Function VerifyFileLocked(ByVal CurrDirectory As String, Optional ByVal CurrFile As String = "", Optional ByVal bSendMsg As Boolean = True) As Boolean
- Dim sLockFile As String = CrateFileLock(CurrDirectory, CurrFile)
+ Dim sLockFile As String = GenerateLockFileName(CurrDirectory, CurrFile)
+ Dim bIsLocked As Boolean = False
If File.Exists(sLockFile) Then
+ Try
+ File.Delete(sLockFile)
+ Catch ex As Exception
+ bIsLocked = True
+ End Try
+ End If
+
+ If bIsLocked Then
' leggere il nome dell'utente
+ Dim UserName As String = ""
+ Try
+ Dim nIndexFile As Integer = FreeFile()
+ FileSystem.FileOpen(nIndexFile, sLockFile, OpenMode.Input, OpenAccess.Read, OpenShare.Shared)
+ UserName = FileSystem.LineInput(nIndexFile)
+ FileSystem.FileClose(nIndexFile)
+ Catch ex As Exception
+ End Try
+
If OptionModule.m_SingleDoor Then
If bSendMsg Then
- Dim sMsg As String = String.Format(EgtMsg(50524), sLockFile)
+ Dim sMsg As String = String.Format(EgtMsg(50524), sLockFile, UserName)
MessageBox.Show(sMsg, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk)
End If
OutLog("File in reading : " & sLockFile)
Else
If bSendMsg Then
' directory in reading by another EgtDOORCreator.
- Dim sMsg As String = String.Format(EgtMsg(50525), sLockFile)
+ Dim sMsg As String = String.Format(EgtMsg(50525), sLockFile, UserName)
MessageBox.Show(sMsg, EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Asterisk)
End If
OutLog("Directoru in reading : " & CurrDirectory)
@@ -66,21 +88,15 @@ Public Module Utility
m_bIsLock = False
Return False
End If
- Dim sLockFile As String = CrateFileLock(CurrDirectory, CurrFile)
- m_CurrLockFile = sLockFile
+ m_CurrLockFile = GenerateLockFileName(CurrDirectory, CurrFile)
m_StopSaving = False
'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)
-
- ' 'File.Open(sLockFile, FileMode.Open)
- ' 'File.SetAccessControl(sLockFile, System.Security.AccessControl.FileSecur)
- FileSystem.FileOpen(1, sLockFile, OpenMode.Output)
- FileSystem.FilePut(1, True)
- FileSystem.Lock(1)
-
+ File.WriteAllText(m_CurrLockFile, NomeUtente, New System.Text.UTF8Encoding(False))
+ m_nIndexLockFile = FreeFile()
+ FileSystem.FileOpen(m_nIndexLockFile, m_CurrLockFile, OpenMode.Append, OpenAccess.ReadWrite, OpenShare.LockWrite)
m_bIsLock = True
If String.IsNullOrEmpty(CurrFile) Then
OutLog("Lock directory : " & m_CurrLockFile)
@@ -98,8 +114,7 @@ Public Module Utility
If Not m_bIsLock Then Return False
' se esiste chiudo il file lockdir della porta corrente
Try
- Unlock(1)
- FileClose(1)
+ FileClose(m_nIndexLockFile)
m_bIsLock = False
OutLog("UnLock : " & m_CurrLockFile)
Catch ex As Exception