EgtDOORCreator 1.9j3 :

- gestione creazione/apertura singola porta.
This commit is contained in:
Nicola Pievani
2018-10-20 10:59:06 +00:00
parent 0d3dc81cbb
commit 0887fdf3fa
11 changed files with 282 additions and 106 deletions
+228 -97
View File
@@ -175,42 +175,81 @@ Public Class ProjectManagerVM
' Gestisco porta corrente modificata
If Not Map.refAssemblyManagerVM.ManageModified() Then Return
' Richiedo il nome del progetto (cioè la directory da creare)
If Not OptionModule.m_SingleDoor Then
Dim SaveFileDialog As New MySaveFileDialogVM
Dim SaveFileDialogWnd As New EgtWPFLib5.SaveFileDialogV(Application.Current.MainWindow, SaveFileDialog)
SaveFileDialog.Title = EgtMsg(50304)
SaveFileDialog.Directory = IniFile.m_MyProjectDir & "\"
SaveFileDialog.Extension = "\"
If Not SaveFileDialogWnd.ShowDialog Then
Map.refAssemblyManagerVM.Open(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
Return
End If
' controllo che il direttorio non esista
Dim MsgResult As MessageBoxResult = MessageBoxResult.Yes
If Directory.Exists(SaveFileDialog.FileName) Then
MsgResult = MessageBox.Show("Directory " & SaveFileDialog.FileName & " already exists! Do you want to overwrite it?", "Caution", MessageBoxButton.YesNo, MessageBoxImage.Asterisk)
' cancello il direttorio
Directory.Delete(SaveFileDialog.FileName, True)
End If
If MsgResult = MessageBoxResult.No Then
Map.refAssemblyManagerVM.Open(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
Return
End If
' Creo nuovo progetto
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
Directory.CreateDirectory(SaveFileDialog.FileName)
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
' salvo il riferimento al progetto corrente
m_CurrProject = CurrProject
' salvo path progetto
CurrProject.Name = SaveFileDialog.FileName
' Ripulisco lista porte
CurrProject.AssemblyList.Clear()
EgtNewFile()
EgtZoom(ZM.ALL)
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
' Creo nuova porta
Map.refAssemblyManagerVM.AddAssembly()
Return
End If
Dim SaveFileDialog As New MySaveFileDialogVM
Dim SaveFileDialogWnd As New EgtWPFLib5.SaveFileDialogV(Application.Current.MainWindow, SaveFileDialog)
SaveFileDialog.Title = EgtMsg(50304)
SaveFileDialog.Directory = IniFile.m_MyProjectDir & "\"
SaveFileDialog.Extension = "\"
If Not SaveFileDialogWnd.ShowDialog Then
Map.refAssemblyManagerVM.Open(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
Return
' dichiaro la finestra di dialogo
Dim saveFileDialog1 As New System.Windows.Forms.SaveFileDialog()
saveFileDialog1.Filter = "ddf files (*.ddf)|*.ddf"
saveFileDialog1.FilterIndex = 2
saveFileDialog1.RestoreDirectory = True
' apro la finestra di dialogo
If saveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Dim FilePathComplete As String = saveFileDialog1.FileName
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
' salvo il riferimento al progetto corrente
m_CurrProject = CurrProject
' salvo path progetto
CurrProject.Name = Path.GetDirectoryName(FilePathComplete)
' Ripulisco lista porte
CurrProject.AssemblyList.Clear()
EgtNewFile()
EgtZoom(ZM.ALL)
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
' creo un nuovo assemblato
Dim Local_AssemblyName As New AssemblyName
Local_AssemblyName.Name = FilePathComplete
m_CurrProject.AssemblyList.Add(Local_AssemblyName)
' Seleziono AssembyName creato
m_CurrProject.SelAssemblyName = Local_AssemblyName
' Creo nuovo assembly
Map.refAssemblyManagerVM.NewCmd(Local_AssemblyName)
' carico il nome come Assemblato selezionato
If Not OptionModule.m_DisableWindowOrder Then
Dim OrderWindow As New OrderV(Application.Current.MainWindow, New OrderVM())
OrderWindow.ShowDialog()
End If
' tolgo la visualizzazione della lista dei nomi
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
CurrProject.NotifyPropertyChanged("Name")
End If
' controllo che il direttorio non esista
Dim MsgResult As MessageBoxResult = MessageBoxResult.Yes
If Directory.Exists(SaveFileDialog.FileName) Then
MsgResult = MessageBox.Show("Directory " & SaveFileDialog.FileName & " already exists! Do you want to overwrite it?", "Caution", MessageBoxButton.YesNo, MessageBoxImage.Asterisk)
' cancello il direttorio
Directory.Delete(SaveFileDialog.FileName, True)
End If
If MsgResult = MessageBoxResult.No Then
Map.refAssemblyManagerVM.Open(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
Return
End If
' Creo nuovo progetto
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
Directory.CreateDirectory(SaveFileDialog.FileName)
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
' salvo il riferimento al progetto corrente
m_CurrProject = CurrProject
' salvo path progetto
CurrProject.Name = SaveFileDialog.FileName
' Ripulisco lista porte
CurrProject.AssemblyList.Clear()
EgtNewFile()
EgtZoom(ZM.ALL)
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
' Creo nuova porta
Map.refAssemblyManagerVM.AddAssembly()
End Sub
#End Region ' NewCommand
@@ -226,14 +265,14 @@ Public Class ProjectManagerVM
End Get
End Property
''' <summary>
''' Execute the Open. This method is invoked by the OpenCommand.
''' </summary>
Public Sub Open()
OpenProject("")
End Sub
Public Sub OpenProject(sFilePath As String)
' se true carica una singola porta del progetto
Dim bModifiersShift As Boolean = OptionModule.m_SingleDoor
Dim sFilePathComplete As String = String.Empty
' verifico se selezionato esiste e modificato
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified Then
Dim sText As String = String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name))
@@ -250,22 +289,53 @@ Public Class ProjectManagerVM
If String.IsNullOrWhiteSpace(sFilePath) OrElse Not Directory.Exists(sFilePath) Then
' elimino eventual FilePath inesistente dalla lista dei recenti
m_MruFiles.Remove(sFilePath)
' apro finestra di scelta cartella di progetto
Dim FolderBrowserDialog As New System.Windows.Forms.FolderBrowserDialog
If Not String.IsNullOrWhiteSpace(Map.refAssemblyManagerVM.CurrProject.Name) Then
FolderBrowserDialog.SelectedPath = Map.refAssemblyManagerVM.CurrProject.Name
ElseIf Not String.IsNullOrEmpty(OptionModule.m_sLastProject) Then
FolderBrowserDialog.SelectedPath = Path.GetDirectoryName(OptionModule.m_sLastProject)
'If OptionModule.m_SingleDoor OrElse Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) Then
If OptionModule.m_SingleDoor Then
bModifiersShift = True
' definisco la finestra di dialogo per la scelta dei file
Dim fd As System.Windows.Forms.OpenFileDialog = New System.Windows.Forms.OpenFileDialog()
fd.Title = "Open File Dialog"
' indirizzo la scelta verso una cartella
If Not String.IsNullOrEmpty(OptionModule.m_sLastProject) Then
fd.InitialDirectory = Path.GetDirectoryName(OptionModule.m_sLastProject)
ElseIf Not String.IsNullOrWhiteSpace(Map.refAssemblyManagerVM.CurrProject.Name) Then
fd.InitialDirectory = Map.refAssemblyManagerVM.CurrProject.Name
Else
fd.InitialDirectory = IniFile.m_MyProjectDir
End If
' seleziono il filtro di apertura
fd.Filter = " (*.ddf)|*.ddf|(*.ddf)|*.ddf"
fd.FilterIndex = 2
fd.RestoreDirectory = True
' apro la finestra di dialogo
If fd.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then
Return
End If
' salvo il nome del direttorio
sFilePath = Path.GetDirectoryName(fd.FileName)
' salvo il nome completo del file
sFilePathComplete = fd.FileName
Else
FolderBrowserDialog.SelectedPath = IniFile.m_MyProjectDir
' dichiaro la finestra di scelta cartella di progetto
Dim FolderBrowserDialog As New System.Windows.Forms.FolderBrowserDialog
If Not String.IsNullOrWhiteSpace(Map.refAssemblyManagerVM.CurrProject.Name) Then
FolderBrowserDialog.SelectedPath = Map.refAssemblyManagerVM.CurrProject.Name
ElseIf Not String.IsNullOrEmpty(OptionModule.m_sLastProject) Then
FolderBrowserDialog.SelectedPath = Path.GetDirectoryName(OptionModule.m_sLastProject)
Else
FolderBrowserDialog.SelectedPath = IniFile.m_MyProjectDir
End If
' mostriamo la finestra di dialogo aperta nel direttorio selzionato sopra
If FolderBrowserDialog.ShowDialog <> Forms.DialogResult.OK Then
' se la risposta è diversa da OK esce
Return
End If
' salvo il nome del direttorio
sFilePath = FolderBrowserDialog.SelectedPath
End If
' mostriamo la finestra di dialogo aperta fino alla directory MyProjects
If FolderBrowserDialog.ShowDialog <> Forms.DialogResult.OK Then
' se la risposta è diversa da OK esce
Return
End If
sFilePath = FolderBrowserDialog.SelectedPath
End If
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
' salvo il riferimento al progetto corrente
m_CurrProject = CurrProject
@@ -273,33 +343,59 @@ Public Class ProjectManagerVM
CurrProject.Name = sFilePath
' Ripulisco lista porte
CurrProject.AssemblyList.Clear()
' Aggiungo porte trovate nella cartella ad un vettore
Dim DDFFileArray() As String = Directory.GetFiles(sFilePath)
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
For DDFIndex = 0 To DDFFileArray.Count - 1
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
' lo aggiungo alla lista delle porte
Dim Local_Assembly As New AssemblyName
Local_Assembly.Name = DDFFileArray(DDFIndex)
Local_Assembly.IsModified = False
CurrProject.AssemblyList.Add(Local_Assembly)
End If
Next
' caricamento elenco porte
If Not bModifiersShift Then
' Aggiungo porte trovate nella cartella ad un vettore
Dim DDFFileArray() As String = Directory.GetFiles(sFilePath)
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
For DDFIndex = 0 To DDFFileArray.Count - 1
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
' lo aggiungo alla lista delle porte
Dim Local_Assembly As New AssemblyName
Local_Assembly.Name = DDFFileArray(DDFIndex)
Local_Assembly.IsModified = False
CurrProject.AssemblyList.Add(Local_Assembly)
End If
Next
Else
' carcio la singola porta
Dim Local_Assembly As New AssemblyName
Local_Assembly.Name = sFilePathComplete
Local_Assembly.IsModified = False
CurrProject.AssemblyList.Add(Local_Assembly)
End If
' Notifico aggiornamento DoorList e Name per aggiornare la grafica
CurrProject.NotifyPropertyChanged("Name")
'CurrProject.NotifyPropertyChanged("Name")
CurrProject.NotifyPropertyChanged("AssemblyList")
' Se c'è almeno una porta la visualizzo
If CurrProject.AssemblyList.Count > 0 Then
CurrProject.SelAssemblyName = CurrProject.AssemblyList(0)
'Map.refAssemblyManagerVM.Open(CurrProject.AssemblyList(0))
Else
Map.refPartPageVM.CurrPart = Nothing
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
EgtNewFile()
EgtZoom(ZM.ALL)
End If
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
' Aggiungo alla lista dei recenti
' carico il nome del direttorio e la visbilità della lista delle porte
If bModifiersShift Then
Map.refMainWindowVM.ProjectNameMsg = CurrProject.SelAssemblyName.Name
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
Else
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Visible
End If
' aggiorno la grafica
CurrProject.NotifyPropertyChanged("Name")
' salvo il nome del file corrente in lettura
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso
Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
WriteMainPrivateProfileString(S_LAUNCHERWINDOW, K_LASTPROJECT, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name)
Else
WriteMainPrivateProfileString(S_LAUNCHERWINDOW, K_LASTPROJECT, Map.refAssemblyManagerVM.CurrProject.Name)
End If
' Aggiungo alla lista dei recenti/ verifico se esite anche se posso salvare un indirizzo comlpeto
m_MruFiles.Add(sFilePath)
End Sub
@@ -381,13 +477,15 @@ Public Class ProjectManagerVM
End Property
Public Sub OpenLastProject()
' Apro l'ultimo progetto
Dim CurrName As String = String.Empty
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
CurrName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name
End If
End If
'' Apro l'ultimo progetto
'Dim CurrName As String = String.Empty
'' verifico se esiste una precedente selezione
'If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
' If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
' CurrName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name
' End If
'End If
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
' carico il percorso dell'ultimo progetto salvato (sul file Config.ini)
If IsNothing(CurrProject.Name) Then
@@ -404,51 +502,84 @@ Public Class ProjectManagerVM
CurrProject.AssemblyList.Clear()
' verifico che esista la cartella
If Directory.Exists(CurrProject.Name) Then
' Aggiungo porte trovate nella cartella ad un vettore
Dim DDFFileArray() As String = Directory.GetFiles(CurrProject.Name)
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
For DDFIndex = 0 To DDFFileArray.Count - 1
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
' lo aggiungo alla lista delle porte
Dim Local_Assembly As New AssemblyName
Local_Assembly.Name = DDFFileArray(DDFIndex)
' carico la singola porta dell'ultimo progetto come unica porta
If OptionModule.m_SingleDoor Then
Dim Local_Assembly As New AssemblyName
If File.Exists(OptionModule.m_sLastProject) Then
Local_Assembly.Name = OptionModule.m_sLastProject
Local_Assembly.IsModified = False
CurrProject.AssemblyList.Add(Local_Assembly)
Else
' Aggiungo il primo nome all'elenco
Dim DDFFileArray() As String = Directory.GetFiles(CurrProject.Name)
For DDFIndex = 0 To DDFFileArray.Count - 1
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" 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
Next
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
Else
' carico un vettore con i file della cartella
Dim DDFFileArray() As String = Directory.GetFiles(CurrProject.Name)
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
For DDFIndex = 0 To DDFFileArray.Count - 1
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
' lo aggiungo alla lista delle porte
Dim Local_Assembly As New AssemblyName
Local_Assembly.Name = DDFFileArray(DDFIndex)
Local_Assembly.IsModified = False
CurrProject.AssemblyList.Add(Local_Assembly)
End If
Next
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Visible
End If
' Notifico aggiornamento DoorList e Name per aggiornare la grafica
CurrProject.NotifyPropertyChanged("Name")
CurrProject.NotifyPropertyChanged("AssemblyList")
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
'Map.refMainWindowVM.ModifyTitle(False)
' Se c'è almeno una porta la visualizzo
If CurrProject.AssemblyList.Count > 0 Then
If Not IsNothing(CurrName) Then
For IndexListAss As Integer = 0 To CurrProject.AssemblyList.Count - 1
If CurrName = CurrProject.AssemblyList(IndexListAss).Name Then
CurrProject.SelAssemblyName = CurrProject.AssemblyList(IndexListAss)
'Map.refAssemblyManagerVM.Open(CurrProject.AssemblyList(IndexListAss))
'If Not String.IsNullOrEmpty(CurrName) Then
' ' ricerco nell'elenco la porta salvata
' For IndexListAss As Integer = 0 To CurrProject.AssemblyList.Count - 1
' If CurrName = CurrProject.AssemblyList(IndexListAss).Name Then
' CurrProject.SelAssemblyName = CurrProject.AssemblyList(IndexListAss)
' Return
' End If
' Next
'End If
' provo a caricare l'ultimo file aperto
If File.Exists(OptionModule.m_sLastProject) Then
For Each ItemFile In CurrProject.AssemblyList
If ItemFile.Name = OptionModule.m_sLastProject Then
CurrProject.SelAssemblyName = ItemFile
If OptionModule.m_SingleDoor Then Map.refMainWindowVM.ProjectNameMsg = OptionModule.m_sLastProject
Return
End If
Next
End If
If String.IsNullOrEmpty(CurrName) AndAlso File.Exists(OptionModule.m_sLastProject) Then
For Each ItemFile In CurrProject.AssemblyList
If ItemFile.Name = OptionModule.m_sLastProject Then
CurrProject.SelAssemblyName = ItemFile
Exit For
End If
Next
Else
' se non esiste il file allora provo a caricare il primo della lista
If File.Exists(CurrProject.AssemblyList(0).Name) Then
CurrProject.SelAssemblyName = CurrProject.AssemblyList(0)
If OptionModule.m_SingleDoor Then Map.refMainWindowVM.ProjectNameMsg = CurrProject.AssemblyList(0).Name
Else
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
End If
Else
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
End If
Else
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
End If
End Sub