EgtWPFLib5 :
- creato SaveFileDialogWithList, dialog con lista di file presenti in una directory per facilitare la sovrascrittura del file già presente con lo stesso nome . - sostituito SaveFileDialog con SaveFileDialogWithList in SetUpWindowVM.
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
Imports System.IO
|
||||
Imports EgtUILib
|
||||
|
||||
Public Class SaveFileDialogWithListVM
|
||||
Inherits VMBase
|
||||
|
||||
Private m_Title As String
|
||||
Public Property Title As String
|
||||
Get
|
||||
If IsNothing(m_Title) Then
|
||||
If IsFolder Then
|
||||
Return EgtMsg(MSG_EGTSAVEFILEDIALOG + 11)
|
||||
Else
|
||||
Return EgtMsg(MSG_EGTSAVEFILEDIALOG + 10)
|
||||
End If
|
||||
Else
|
||||
Return m_Title
|
||||
End If
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_Title = value
|
||||
End Set
|
||||
End Property
|
||||
Private m_sDirectory As String
|
||||
Public Property Directory As String
|
||||
Get
|
||||
Return m_sDirectory
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_sDirectory = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_sExtension As String = String.Empty
|
||||
Public Property Extension As String
|
||||
Get
|
||||
Return m_sExtension
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_sExtension = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_FileName As String
|
||||
Public Property FileName As String
|
||||
Get
|
||||
Return m_FileName
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_FileName = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_IsFolder As Boolean = False
|
||||
Public Property IsFolder As Boolean
|
||||
Get
|
||||
Return m_IsFolder
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
m_IsFolder = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_WriteFileName As String
|
||||
Public Property WriteFileName As String
|
||||
Get
|
||||
Return m_WriteFileName
|
||||
End Get
|
||||
Set(value As String)
|
||||
Dim TempName As String = value
|
||||
For Each cInvalid In Path.GetInvalidFileNameChars()
|
||||
TempName = TempName.Replace(cInvalid, "")
|
||||
Next
|
||||
If TempName.Length = value.Length Then
|
||||
m_WriteFileName = value
|
||||
Else
|
||||
MessageBox.Show(EgtMsg(MSG_MACHININGDBERRORS + 4),
|
||||
EgtMsg(MSG_EGTSAVEFILEDIALOG + 7),
|
||||
MessageBoxButton.OK, MessageBoxImage.Error)
|
||||
End If
|
||||
NotifyPropertyChanged("WriteFileName")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_sFilter As String
|
||||
Public Property Filter As String
|
||||
Get
|
||||
Return m_sFilter
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_sFilter = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_sFileNameFilter As Predicate(Of String)
|
||||
Public Property FileNameFilter As Predicate(Of String)
|
||||
Get
|
||||
Return m_sFileNameFilter
|
||||
End Get
|
||||
Set(value As Predicate(Of String))
|
||||
m_sFileNameFilter = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_sExtensions As New List(Of String)
|
||||
Public ReadOnly Property Extensions As List(Of String)
|
||||
Get
|
||||
Return m_sExtensions
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private m_FileList As New List(Of String)
|
||||
Public Property FileList As List(Of String)
|
||||
Get
|
||||
Return m_FileList
|
||||
End Get
|
||||
Set(value As List(Of String))
|
||||
m_FileList = value
|
||||
NotifyPropertyChanged("FileList")
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_SelectedFile As String
|
||||
Public Property SelectedFile As String
|
||||
Get
|
||||
Return m_SelectedFile
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_SelectedFile = value
|
||||
NotifyPropertyChanged("SelectedFile")
|
||||
|
||||
If Not IsNothing(m_SelectedFile) Then
|
||||
m_WriteFileName = Path.GetFileNameWithoutExtension(SelectedFile)
|
||||
NotifyPropertyChanged("WriteFileName")
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
#Region "Messages"
|
||||
|
||||
Public ReadOnly Property SaveMsg As String
|
||||
Get
|
||||
Return EgtMsg(MSG_EGTSAVEFILEDIALOG + 1)
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property CancelMsg As String
|
||||
Get
|
||||
Return EgtMsg(MSG_EGTSAVEFILEDIALOG + 2)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
#End Region
|
||||
|
||||
Public Sub Initialize()
|
||||
' se la cartella d'origine non è stata impostata, esco
|
||||
If String.IsNullOrWhiteSpace(m_sDirectory) Then
|
||||
Throw New Exception("Exception: Directory is null or white space!")
|
||||
End If
|
||||
' se non esiste, esco
|
||||
If Not IO.Directory.Exists(m_sDirectory) Then
|
||||
Throw New Exception("Exception: Directory doesn't exist!")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(m_sExtension) And Not IsFolder Then
|
||||
Throw New Exception("Exception: Extension is null or white space!")
|
||||
End If
|
||||
' verifico se è impostato un nome di default
|
||||
If Not String.IsNullOrWhiteSpace(m_FileName) Then
|
||||
m_WriteFileName = m_FileName
|
||||
End If
|
||||
NotifyPropertyChanged("WriteFileName")
|
||||
If IsFolder Then m_sExtension = ""
|
||||
' inizializzo la ListBox
|
||||
InitializeListBox()
|
||||
End Sub
|
||||
|
||||
Public Function InitializeListBox() As Boolean?
|
||||
' se esiste la stringa filtro estensioni
|
||||
If Not IsNothing(m_sFilter) Then
|
||||
' creo la lista delle estensioni da considerare
|
||||
m_sFilter = m_sFilter.ToLower
|
||||
m_sFilter = m_sFilter.Replace("*", "")
|
||||
m_sExtensions = New List(Of String)(m_sFilter.Split(","c))
|
||||
For Index = m_sExtensions.Count - 1 To 0 Step -1
|
||||
If Not Path.HasExtension(m_sExtensions(Index)) Then
|
||||
m_sExtensions.RemoveAt(Index)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' leggo i file che contiene
|
||||
Dim AllFilesInDir() As String = IO.Directory.GetFiles(m_sDirectory)
|
||||
'Dim AllVerifiedFilesInDir As New List(Of String)
|
||||
For FileIndex = 0 To AllFilesInDir.Count - 1
|
||||
Dim CurrFile As String = AllFilesInDir(FileIndex)
|
||||
' se esistono delle estensioni da verificare
|
||||
If m_sExtensions.Count > 0 Then
|
||||
' verifico se ha una delle estensioni ricercate
|
||||
For ExtIndex = 0 To m_sExtensions.Count - 1
|
||||
If Path.GetExtension(CurrFile).ToLower = m_sExtensions(ExtIndex).ToLower Then
|
||||
' verifico se esiste la regola del filtro generico
|
||||
If Not IsNothing(m_sFileNameFilter) Then
|
||||
' verifico che la regola del filtro generico sia rispettata
|
||||
If m_sFileNameFilter(CurrFile) Then
|
||||
' aggiungo il file alla lista
|
||||
m_FileList.Add(AllFilesInDir(FileIndex))
|
||||
End If
|
||||
Else
|
||||
' aggiungo il file alla lista
|
||||
m_FileList.Add(AllFilesInDir(FileIndex))
|
||||
End If
|
||||
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
' altrimenti verifico se esiste la regola del filtro generico
|
||||
If Not IsNothing(m_sFileNameFilter) Then
|
||||
' verifico che la regola del filtro generico sia rispettata
|
||||
If m_sFileNameFilter(CurrFile) Then
|
||||
' aggiungo il file alla lista
|
||||
m_FileList.Add(AllFilesInDir(FileIndex))
|
||||
End If
|
||||
Else
|
||||
' aggiungo il file alla lista
|
||||
m_FileList.Add(AllFilesInDir(FileIndex))
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
' verifico se il nome file passatomi è presente nella lista
|
||||
If Not String.IsNullOrWhiteSpace(m_FileName) Then
|
||||
If Path.HasExtension(m_FileName) Then
|
||||
If m_FileList.Contains(m_FileName) Then
|
||||
SelectedFile = m_FileName
|
||||
ElseIf m_FileList.Contains(m_sDirectory & "\" & m_FileName) Then
|
||||
SelectedFile = m_sDirectory & "\" & m_FileName
|
||||
End If
|
||||
Else
|
||||
For FileIndex = 0 To m_FileList.Count - 1
|
||||
Dim CurrFile As String = AllFilesInDir(FileIndex)
|
||||
If CurrFile = m_FileName Then
|
||||
SelectedFile = m_FileName
|
||||
ElseIf CurrFile = m_sDirectory & "\" & m_FileName Then
|
||||
SelectedFile = m_sDirectory & "\" & m_FileName
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
End Function
|
||||
|
||||
Friend Function Save() As Boolean
|
||||
Dim sCompleteFileName As String = m_sDirectory & "\" & m_WriteFileName & If(IsFolder, "", m_sExtension)
|
||||
If String.IsNullOrWhiteSpace(m_WriteFileName) Then
|
||||
MessageBox.Show(EgtMsg(MSG_EGTSAVEFILEDIALOG + 8), EgtMsg(MSG_EGTSAVEFILEDIALOG + 7), MessageBoxButton.OK, MessageBoxImage.Error)
|
||||
Return False
|
||||
End If
|
||||
If IsFolder Then
|
||||
If System.IO.Directory.Exists(sCompleteFileName) Then
|
||||
If MessageBox.Show(m_WriteFileName & " " & EgtMsg(MSG_EGTSAVEFILEDIALOG + 3) & vbCrLf & EgtMsg(MSG_EGTSAVEFILEDIALOG + 4), EgtMsg(MSG_EGTSAVEFILEDIALOG + 9), MessageBoxButton.YesNo, MessageBoxImage.Exclamation) <> MessageBoxResult.Yes Then
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
If File.Exists(sCompleteFileName) Then
|
||||
If MessageBox.Show(m_WriteFileName & " " & EgtMsg(MSG_EGTSAVEFILEDIALOG + 3) & vbCrLf & EgtMsg(MSG_EGTSAVEFILEDIALOG + 4), EgtMsg(MSG_EGTSAVEFILEDIALOG + 9), MessageBoxButton.YesNo, MessageBoxImage.Exclamation) <> MessageBoxResult.Yes Then
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
m_FileName = sCompleteFileName
|
||||
Return True
|
||||
End Function
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user