From e58cca56561a5c4e8cdeae97f091d658890074ad Mon Sep 17 00:00:00 2001 From: Nicola Pievani Date: Wed, 7 Jun 2017 13:41:58 +0000 Subject: [PATCH] egtDOORCreator 1.8f1 : - modifica nella richiesta di salvataggio di una nuova porta creata; - sovrascrive i file con lo stesso nome (dopo aver avvisato con un messaggio se si vuole procedere); - aggiunta del bottone "annulla" durante le operazioni di salvataggio. --- DoorManager/DoorManagerView.xaml | 5 +- DoorManager/DoorManagerView.xaml.vb | 15 + DoorManager/DoorManagerViewModel.vb | 371 +++++++++++++++------- Guide/GuideView.xaml.vb | 3 +- Guide/GuideViewModel.vb | 2 +- MainWindow/MainWindowViewModel.vb | 5 +- My Project/AssemblyInfo.vb | 4 +- ProjectManager/ProjectManagerViewModel.vb | 6 +- 8 files changed, 282 insertions(+), 129 deletions(-) diff --git a/DoorManager/DoorManagerView.xaml b/DoorManager/DoorManagerView.xaml index 98fa013..5cf39bc 100644 --- a/DoorManager/DoorManagerView.xaml +++ b/DoorManager/DoorManagerView.xaml @@ -32,15 +32,16 @@ + + RelativeSource AncestorType={x:Type ListBoxItem}}}"> diff --git a/DoorManager/DoorManagerView.xaml.vb b/DoorManager/DoorManagerView.xaml.vb index a7e3b57..8523750 100644 --- a/DoorManager/DoorManagerView.xaml.vb +++ b/DoorManager/DoorManagerView.xaml.vb @@ -1,3 +1,18 @@ Public Class DoorManagerView + Private m_rfDoorManagerViewModel As DoorManagerViewModel + + Sub New(rfDoorManagerViewModel As DoorManagerViewModel) + ' This call is required by the designer. + InitializeComponent() + ' Add any initialization after the InitializeComponent() call. + Me.DataContext = rfDoorManagerViewModel + m_rfDoorManagerViewModel = rfDoorManagerViewModel + End Sub + + Private Sub Door_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) + Dim Item As ListBoxItem = DirectCast(sender, ListBoxItem) + e.Handled = Not m_rfDoorManagerViewModel.ChooseSelectedDoor(CStr(Item.DataContext)) + End Sub + End Class diff --git a/DoorManager/DoorManagerViewModel.vb b/DoorManager/DoorManagerViewModel.vb index fb9c9b3..bafff11 100644 --- a/DoorManager/DoorManagerViewModel.vb +++ b/DoorManager/DoorManagerViewModel.vb @@ -11,7 +11,7 @@ Public Class DoorManagerViewModel Private NewDoor As Boolean = False Friend DeleteNewDoor As Integer = 1 Private SelDoor As New Door - + Friend MsgResult As MessageBoxResult ' creiamo un nuovo progetto: un nome e una lista di porte Private m_CurrProject As New Project @@ -30,101 +30,113 @@ Public Class DoorManagerViewModel Return m_SelectedDoor End Get Set(value As String) - If IsNothing(value) Then Return - ' riferimento alla porta (per stampare il DDF) - Dim DoorParametersViewModel As DoorParametersViewModel = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel) - ' se eiste il file selezionato - If File.Exists(m_SelectedDoor) Then - ' prima di cambiare porta selezionata chiedo il salvataggio il quella precedente - ' se esiste una porta corrente associata al nome allora scrivo il file ddf per il disegno - If Not IsNothing(DoorParametersViewModel.CurrDoor) Then - ' è necessario che il file passato alla grafica non presenti espressioni numeriche - DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) - - Select Case DeleteNewDoor - ' se è una porta appena creata - Case 0 - ' chiedo se deve essere eliminata la porta che era stata creata - RemoveDoor() - DeleteNewDoor = 1 - ' se è una porta "vecchia" - Case 1 - ' confronto il file della porta originale e quello aggiornato: se i due file sono uguali eccetto la data - ' non faccio nulla - If DdfFile.SetModify(m_rfMainWindowViewModel) Then - - Else - ' altrimenti chiedo di salvare il file di disegno - If MessageBox.Show(String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(m_SelectedDoor)), EgtMsg(50110), MessageBoxButton.YesNo, MessageBoxImage.Warning) = MessageBoxResult.Yes Then - DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, m_SelectedDoor, True) - DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).bSetChange = False - End If - End If - End Select - End If - End If - ' tolgo l'* dal titolo a prescindere che il file sia stato o no salvato - Dim SetTitle = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).CurrProject.Name - m_rfMainWindowViewModel.ProjectNameMsg = SetTitle - ' se non esisteva nessuna porta allora posso procedere m_SelectedDoor = value NotifyPropertyChanged("SelectedDoor") - SelDoor = Nothing - SelDoor = New Door - SelDoor.NewDoor = NewDoor - If SelDoor.NewDoor Then - 'OptionModule.GeneralDoor.CompoList.Clear() - SelDoor.Width = OptionModule.m_Width - SelDoor.Height = OptionModule.m_Height - SelDoor.Thickness = OptionModule.m_Thickness - SelDoor.Weight = OptionModule.m_Weight - SelDoor.Swing = OptionModule.m_Swing + 'Dim Index As Integer = -1 - SelDoor.LockEdgeType = OptionModule.m_LockEdgeType - SelDoor.HingeEdgeType = OptionModule.m_HingeEdgeType - SelDoor.TopType = OptionModule.m_TopType - SelDoor.BottomType = OptionModule.m_BottomType + 'If IsNothing(value) Then Return + '' riferimento alla porta (per stampare il DDF) + 'Dim DoorParametersViewModel As DoorParametersViewModel = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel) + '' se eiste il file selezionato + 'If File.Exists(m_SelectedDoor) Then + ' ' prima di cambiare porta selezionata chiedo il salvataggio il quella precedente + ' ' se esiste una porta corrente associata al nome allora scrivo il file ddf per il disegno + ' If Not IsNothing(DoorParametersViewModel.CurrDoor) Then + ' ' è necessario che il file passato alla grafica non presenti espressioni numeriche + ' DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) - SelDoor.LockEdgeMachining = OptionModule.m_LockEdgeMachining - SelDoor.HingeEdgeMachining = OptionModule.m_HingeEdgeMachining - SelDoor.TopMachining = OptionModule.m_TopMachining - SelDoor.BottomMachining = OptionModule.m_BottomMachining - SelDoor.LockEdgeOverMaterial = OptionModule.m_LockEdgeOverMaterial - SelDoor.HingeEdgeOverMaterial = OptionModule.m_HingeEdgeOverMaterial - SelDoor.TopOverMaterial = OptionModule.m_TopOverMaterial - SelDoor.BottomOverMaterial = OptionModule.m_BottomOverMaterial - ' assegno la porta creata alla Programma come porta corrente - DoorParametersViewModel.CurrDoor = SelDoor - ' scrivo il ddf della nuova porta come file temp - If Not IsNothing(DoorParametersViewModel.CurrDoor) Then DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) - ' e stampo il nuovo ddf - DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, m_SelectedDoor, True) - ' quindi da ora la nuova porta ha un suo DDF che possiamo trattare come tutti gli altri - ' assegno il valore falso cosi da non ripetere questa operazione nel caso in cui si arrivi dalla funzione AddDoor - SelDoor.NewDoor = False - NewDoor = False - End If - ' per aggiornare la parte grafica - ' se il nome della porta è uno spazio vuoto allora non genero la porta ( per esempio sto aprendo una cartella vuota) - If Not String.IsNullOrWhiteSpace(m_SelectedDoor) Then - ' leggo il file ddf - Door.ReadDDF(m_SelectedDoor, SelDoor) - ' assegno come porta del programma quella aperta - DoorParametersViewModel.CurrDoor = SelDoor - ' copio il file DDF come file DDF temporaneo - If Not IsNothing(DoorParametersViewModel.CurrDoor) Then - DdfFile.WriteDDF(SelDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) - ExecDoors(DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).ProjectScene, IniFile.m_sTempDir & "\CurrDoor.ddf") - ' dal MainWindowViewModel accediamo alla ScenaManagerViewModel (primo DirectCast) - ' dalla StatusBar accediamo alla proprietà pubblica UnitMeasure - DirectCast(DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).StatusBar.DataContext, StatusBarViewModel).UnitMeasure = SelDoor.Measure - End If - End If - If IsNothing(SelDoor) Then - MessageBox.Show(EgtMsg(50145), EgtMsg(50118), MessageBoxButton.OK, MessageBoxImage.Exclamation) - DoorParametersViewModel.CurrDoor = Nothing - DeleteDoorFromList() - End If + ' Select Case DeleteNewDoor + ' ' se è una porta appena creata + ' Case 0 + ' ' chiedo se deve essere eliminata la porta che era stata creata + ' RemoveDoor() + ' DeleteNewDoor = 1 + ' ' se è una porta "vecchia" + ' Case 1 + ' ' confronto il file della porta originale e quello aggiornato: se i due file sono uguali eccetto la data + ' ' non faccio nulla + ' If DdfFile.SetModify(m_rfMainWindowViewModel) Then + + ' Else + ' ' altrimenti chiedo di salvare il file di disegno + ' MsgResult = MessageBox.Show(String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(m_SelectedDoor)), EgtMsg(50110), MessageBoxButton.YesNoCancel, MessageBoxImage.Warning) + ' If MsgResult = MessageBoxResult.Yes Then + ' DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, m_SelectedDoor, True) + ' DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).bSetChange = False + ' ElseIf MsgResult = MessageBoxResult.Cancel Then + + ' NotifyPropertyChanged("SelectedDoor") + ' Exit Property + ' ElseIf MsgResult = MessageBoxResult.No Then + ' RemoveDoor() + ' End If + ' End If + + ' End Select + ' End If + 'End If + '' tolgo l'* dal titolo a prescindere che il file sia stato o no salvato + 'Dim SetTitle = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).CurrProject.Name + 'm_rfMainWindowViewModel.ProjectNameMsg = SetTitle + '' se non esisteva nessuna porta allora posso procedere + 'm_SelectedDoor = value + 'NotifyPropertyChanged("SelectedDoor") + 'SelDoor = Nothing + 'SelDoor = New Door + 'SelDoor.NewDoor = NewDoor + 'If SelDoor.NewDoor Then + ' 'OptionModule.GeneralDoor.CompoList.Clear() + ' SelDoor.Width = OptionModule.m_Width + ' SelDoor.Height = OptionModule.m_Height + ' SelDoor.Thickness = OptionModule.m_Thickness + ' SelDoor.Weight = OptionModule.m_Weight + ' SelDoor.Swing = OptionModule.m_Swing + + ' SelDoor.LockEdgeType = OptionModule.m_LockEdgeType + ' SelDoor.HingeEdgeType = OptionModule.m_HingeEdgeType + ' SelDoor.TopType = OptionModule.m_TopType + ' SelDoor.BottomType = OptionModule.m_BottomType + + ' SelDoor.LockEdgeMachining = OptionModule.m_LockEdgeMachining + ' SelDoor.HingeEdgeMachining = OptionModule.m_HingeEdgeMachining + ' SelDoor.TopMachining = OptionModule.m_TopMachining + ' SelDoor.BottomMachining = OptionModule.m_BottomMachining + ' SelDoor.LockEdgeOverMaterial = OptionModule.m_LockEdgeOverMaterial + ' SelDoor.HingeEdgeOverMaterial = OptionModule.m_HingeEdgeOverMaterial + ' SelDoor.TopOverMaterial = OptionModule.m_TopOverMaterial + ' SelDoor.BottomOverMaterial = OptionModule.m_BottomOverMaterial + ' ' assegno la porta creata alla Programma come porta corrente + ' DoorParametersViewModel.CurrDoor = SelDoor + ' ' scrivo il ddf della nuova porta come file temp + ' If Not IsNothing(DoorParametersViewModel.CurrDoor) Then DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) + ' ' e stampo il nuovo ddf + ' DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, m_SelectedDoor, True) + ' ' quindi da ora la nuova porta ha un suo DDF che possiamo trattare come tutti gli altri + ' ' assegno il valore falso cosi da non ripetere questa operazione nel caso in cui si arrivi dalla funzione AddDoor + ' SelDoor.NewDoor = True + ' NewDoor = False + 'End If + '' per aggiornare la parte grafica + '' se il nome della porta è uno spazio vuoto allora non genero la porta ( per esempio sto aprendo una cartella vuota) + 'If Not String.IsNullOrWhiteSpace(m_SelectedDoor) Then + ' ' leggo il file ddf + ' Door.ReadDDF(m_SelectedDoor, SelDoor) + ' ' assegno come porta del programma quella aperta + ' DoorParametersViewModel.CurrDoor = SelDoor + ' ' copio il file DDF come file DDF temporaneo + ' If Not IsNothing(DoorParametersViewModel.CurrDoor) Then + ' DdfFile.WriteDDF(SelDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) + ' ExecDoors(DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).ProjectScene, IniFile.m_sTempDir & "\CurrDoor.ddf") + ' ' dal MainWindowViewModel accediamo alla ScenaManagerViewModel (primo DirectCast) + ' ' dalla StatusBar accediamo alla proprietà pubblica UnitMeasure + ' DirectCast(DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).StatusBar.DataContext, StatusBarViewModel).UnitMeasure = SelDoor.Measure + ' End If + 'End If + 'If IsNothing(SelDoor) Then + ' MessageBox.Show(EgtMsg(50145), EgtMsg(50118), MessageBoxButton.OK, MessageBoxImage.Exclamation) + ' DoorParametersViewModel.CurrDoor = Nothing + ' DeleteDoorFromList() + 'End If End Set End Property @@ -177,6 +189,118 @@ Public Class DoorManagerViewModel m_rfMainWindowViewModel = MainWindowViewModel End Sub +#Region "METHODS" + + Friend Function ChooseSelectedDoor(value As String) As Boolean + Dim Index As Integer = -1 + + If IsNothing(value) Then Return False + ' riferimento alla porta (per stampare il DDF) + Dim DoorParametersViewModel As DoorParametersViewModel = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel) + ' se eiste il file selezionato + If File.Exists(m_SelectedDoor) Then + ' prima di cambiare porta selezionata chiedo il salvataggio il quella precedente + ' se esiste una porta corrente associata al nome allora scrivo il file ddf per il disegno + If Not IsNothing(DoorParametersViewModel.CurrDoor) Then + ' è necessario che il file passato alla grafica non presenti espressioni numeriche + DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) + + Select Case DeleteNewDoor + ' se è una porta appena creata + Case 0 + ' chiedo se deve essere eliminata la porta che era stata creata + RemoveDoor() + DeleteNewDoor = 1 + ' se è una porta "vecchia" + Case 1 + ' confronto il file della porta originale e quello aggiornato: se i due file sono uguali eccetto la data + ' non faccio nulla + If DdfFile.SetModify(m_rfMainWindowViewModel) Then + + Else + ' altrimenti chiedo di salvare il file di disegno + MsgResult = MessageBox.Show(String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(m_SelectedDoor)), EgtMsg(50110), MessageBoxButton.YesNoCancel, MessageBoxImage.Warning) + If MsgResult = MessageBoxResult.Yes Then + DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, m_SelectedDoor, True) + DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).bSetChange = False + ElseIf MsgResult = MessageBoxResult.Cancel Then + + 'NotifyPropertyChanged("SelectedDoor") + Return False + ElseIf MsgResult = MessageBoxResult.No Then + RemoveDoor() + End If + End If + + End Select + End If + End If + ' tolgo l'* dal titolo a prescindere che il file sia stato o no salvato + Dim SetTitle = DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).CurrProject.Name + m_rfMainWindowViewModel.ProjectNameMsg = SetTitle + ' se non esisteva nessuna porta allora posso procedere + m_SelectedDoor = value + NotifyPropertyChanged("SelectedDoor") + SelDoor = Nothing + SelDoor = New Door + SelDoor.NewDoor = NewDoor + If SelDoor.NewDoor Then + 'OptionModule.GeneralDoor.CompoList.Clear() + SelDoor.Width = OptionModule.m_Width + SelDoor.Height = OptionModule.m_Height + SelDoor.Thickness = OptionModule.m_Thickness + SelDoor.Weight = OptionModule.m_Weight + SelDoor.Swing = OptionModule.m_Swing + + SelDoor.LockEdgeType = OptionModule.m_LockEdgeType + SelDoor.HingeEdgeType = OptionModule.m_HingeEdgeType + SelDoor.TopType = OptionModule.m_TopType + SelDoor.BottomType = OptionModule.m_BottomType + + SelDoor.LockEdgeMachining = OptionModule.m_LockEdgeMachining + SelDoor.HingeEdgeMachining = OptionModule.m_HingeEdgeMachining + SelDoor.TopMachining = OptionModule.m_TopMachining + SelDoor.BottomMachining = OptionModule.m_BottomMachining + SelDoor.LockEdgeOverMaterial = OptionModule.m_LockEdgeOverMaterial + SelDoor.HingeEdgeOverMaterial = OptionModule.m_HingeEdgeOverMaterial + SelDoor.TopOverMaterial = OptionModule.m_TopOverMaterial + SelDoor.BottomOverMaterial = OptionModule.m_BottomOverMaterial + ' assegno la porta creata alla Programma come porta corrente + DoorParametersViewModel.CurrDoor = SelDoor + ' scrivo il ddf della nuova porta come file temp + If Not IsNothing(DoorParametersViewModel.CurrDoor) Then DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) + ' e stampo il nuovo ddf + DdfFile.WriteDDF(DoorParametersViewModel.CurrDoor, m_SelectedDoor, True) + ' quindi da ora la nuova porta ha un suo DDF che possiamo trattare come tutti gli altri + ' assegno il valore falso cosi da non ripetere questa operazione nel caso in cui si arrivi dalla funzione AddDoor + SelDoor.NewDoor = True + NewDoor = False + End If + ' per aggiornare la parte grafica + ' se il nome della porta è uno spazio vuoto allora non genero la porta ( per esempio sto aprendo una cartella vuota) + If Not String.IsNullOrWhiteSpace(m_SelectedDoor) Then + ' leggo il file ddf + Door.ReadDDF(m_SelectedDoor, SelDoor) + ' assegno come porta del programma quella aperta + DoorParametersViewModel.CurrDoor = SelDoor + ' copio il file DDF come file DDF temporaneo + If Not IsNothing(DoorParametersViewModel.CurrDoor) Then + DdfFile.WriteDDF(SelDoor, IniFile.m_sTempDir & "\CurrDoor.ddf", True) + ExecDoors(DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).ProjectScene, IniFile.m_sTempDir & "\CurrDoor.ddf") + ' dal MainWindowViewModel accediamo alla ScenaManagerViewModel (primo DirectCast) + ' dalla StatusBar accediamo alla proprietà pubblica UnitMeasure + DirectCast(DirectCast(m_rfMainWindowViewModel.SceneManager.DataContext, SceneManagerViewModel).StatusBar.DataContext, StatusBarViewModel).UnitMeasure = SelDoor.Measure + End If + End If + If IsNothing(SelDoor) Then + MessageBox.Show(EgtMsg(50145), EgtMsg(50118), MessageBoxButton.OK, MessageBoxImage.Exclamation) + DoorParametersViewModel.CurrDoor = Nothing + DeleteDoorFromList() + End If + Return True + End Function +#End Region ' METHODS + #Region "COMMANDS" #Region "AddDoorCommand" @@ -231,6 +355,27 @@ Public Class DoorManagerViewModel Else SaveFileDialog.FileName &= K_DDFEXTENSION End If + ' controllo che il nome non sia presente nella lista + Dim bNameExist As Boolean = False + Dim IndexDoorList As Integer + For IndexDoorList = 0 To CurrProject.DoorList.Count - 1 + If CurrProject.DoorList(IndexDoorList) = SaveFileDialog.FileName Then + ' se il nome è nella lista allora esco dal ciclo e rendo falsa la variabile bNameExist + bNameExist = True + Exit For + End If + bNameExist = False + Next + + ' se il nome è nella lista allora sovrascirvo sulla porta esistente + If bNameExist Then + ' elimino la porta esistente + File.Delete(SaveFileDialog.FileName) + ' elimino dalla lista + m_CurrProject.DoorList.Remove(SaveFileDialog.FileName) + CurrProject.NotifyPropertyChanged("DoorList") + End If + ' aggiungo il nome del file alla lista delle porte CurrProject.DoorList.Add(SaveFileDialog.FileName) ' aggiorno la lista @@ -246,32 +391,10 @@ Public Class DoorManagerViewModel Door.ReadDDF(ImportTemplate, TemplateDoor) WriteDDF(TemplateDoor, SaveFileDialog.FileName, False) End If + ChooseSelectedDoor(SaveFileDialog.FileName) SelectedDoor = SaveFileDialog.FileName - DeleteNewDoor = 0 - - '' '' controllo che il nome del file già non esiste nella lista! - ' ''If CurrProject.DoorList.Count > 0 Then - ' '' For IndexDoorList = 0 To CurrProject.DoorList.Count - 1 - ' '' ' se il nome esiste già nella lista - ' '' If CurrProject.DoorList(IndexDoorList) = SaveFileDialog.FileName Then - ' '' MessageBox.Show(String.Format(EgtMsg(50114), CurrProject.Name), EgtMsg(50115), MessageBoxButton.OK, MessageBoxImage.Exclamation) - ' '' 'esco dalla lista e chiedo nuovamente il nome da inserire - ' '' NameExist = True - ' '' Exit For - ' '' Else - ' '' NameExist = False - ' '' End If - ' '' Next - ' ''Else - ' '' ' sicuramente non esiste alcuna porta - ' '' NameExist = False - ' ''End If - '' '' se il nome esiste allora esco dalla sub - ' ''If NameExist Then Exit Sub - ' altrimenti se non esco - - - 'm_rfMainWindowViewModel.ProjectNameMsg = "*" + ' con la dichiarazione seguente salto non considero più di chiedere se eliminare la porta già esistente + DeleteNewDoor = 1 End Sub #End Region ' AddDoorCommand @@ -294,13 +417,25 @@ Public Class DoorManagerViewModel ''' Execute the New. This method is invoked by the NewCommand. ''' Public Sub RemoveDoor() + Dim DeletingQuestion As Integer = 0 + Dim DeletingResult As MessageBoxResult = MessageBoxResult.No If Not IsNothing(m_SelectedDoor) Then DeleteNewDoor = -1 ' salvo il nome del file che sta per essere eliminato Dim RemoveDoorName As String = Path.GetFileNameWithoutExtension(m_SelectedDoor) + + If DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).CurrDoor.NewDoor Then + ' se sono arrivato qui signifoca che sto chiudendo il programma con una porta nuova aperta ma non salvata + ' se ho dichiarato che non voglio salvare significa che devo eliminare + DeletingResult = MessageBoxResult.Yes + Else + ' stamp a video il messaggio per chiedere se eliminare + DeletingResult = MessageBox.Show(String.Format(EgtMsg(50116), Path.GetFileNameWithoutExtension(m_SelectedDoor)), EgtMsg(50110), MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No) + End If + ' chiedo se devo eliminere il file: se si - If MessageBox.Show(String.Format(EgtMsg(50116), Path.GetFileNameWithoutExtension(m_SelectedDoor)), EgtMsg(50110), MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No) = MessageBoxResult.Yes Then + If DeletingResult = MessageBoxResult.Yes Then ' ricerco l'indice del file all'interno della lista delle porte Dim SelIndex As Integer = m_CurrProject.DoorList.IndexOf(m_SelectedDoor) ' elimino dall'elenco dei file diff --git a/Guide/GuideView.xaml.vb b/Guide/GuideView.xaml.vb index 70a08f2..736718c 100644 --- a/Guide/GuideView.xaml.vb +++ b/Guide/GuideView.xaml.vb @@ -1,7 +1,8 @@ Public Class GuideView - Private m_GuideViewModel As New GuideViewModel + Private m_GuideViewModel As GuideViewModel Public Shared m_Language As String + Sub New(Owner As Window, GuideViewModel As GuideViewModel) MyBase.New(Owner) ' This call is required by the designer. diff --git a/Guide/GuideViewModel.vb b/Guide/GuideViewModel.vb index f3a4a56..0b6f603 100644 --- a/Guide/GuideViewModel.vb +++ b/Guide/GuideViewModel.vb @@ -9,7 +9,7 @@ Public Class GuideViewModel Public ReadOnly Property Title As String Get - Return "Guide" + Return "Help" End Get End Property diff --git a/MainWindow/MainWindowViewModel.vb b/MainWindow/MainWindowViewModel.vb index 05805fc..b67efae 100644 --- a/MainWindow/MainWindowViewModel.vb +++ b/MainWindow/MainWindowViewModel.vb @@ -56,8 +56,7 @@ Public Class MainWindowViewModel Public ReadOnly Property DoorManager As DoorManagerView Get If IsNothing(m_DoorManager) Then - m_DoorManager = New DoorManagerView - m_DoorManager.DataContext = New DoorManagerViewModel(Me) + m_DoorManager = New DoorManagerView(New DoorManagerViewModel(Me)) End If Return m_DoorManager End Get @@ -223,6 +222,8 @@ Public Class MainWindowViewModel ElseIf (Result = MessageBoxResult.Yes) Then ' altrimenti sovrascrivo il DDF DdfFile.WriteDDF(DirectCast(Me.DoorParameters.DataContext, DoorParametersViewModel).CurrDoor, SelDoor, True) + Else + DirectCast(Me.DoorManager.DataContext, DoorManagerViewModel).RemoveDoor() End If End If ' scrivo il nome dell'ultimo file aperto diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index b942774..c79eaed 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -72,5 +72,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/ProjectManager/ProjectManagerViewModel.vb b/ProjectManager/ProjectManagerViewModel.vb index ee6cac9..6a4a462 100644 --- a/ProjectManager/ProjectManagerViewModel.vb +++ b/ProjectManager/ProjectManagerViewModel.vb @@ -233,7 +233,8 @@ Public Class ProjectManagerViewModel CurrProject.NotifyPropertyChanged("DoorList") ' Se c'è almeno una porta la visualizzo If CurrProject.DoorList.Count > 0 Then - DoorManagerViewModel.SelectedDoor = CurrProject.DoorList(0) + DoorManagerViewModel.ChooseSelectedDoor(CurrProject.DoorList(0)) + 'DoorManagerViewModel.SelectedDoor = CurrProject.DoorList(0) Else DirectCast(m_rfMainWindowViewModel.DoorParameters.DataContext, DoorParametersViewModel).CurrDoor = Nothing EgtNewFile() @@ -352,7 +353,6 @@ Public Class ProjectManagerViewModel Dim OptionsWindow As New OptionsView OptionsWindow.Height = 550 OptionsWindow.Width = 550 - OptionsWindow.DataContext = New OptionsViewModel(m_rfMainWindowViewModel) OptionsWindow.Owner = Application.Current.MainWindow OptionsWindow.ShowDialog() @@ -395,7 +395,7 @@ Public Class ProjectManagerViewModel CurrProject.NotifyPropertyChanged("DoorList") ' Se c'è almeno una porta la visualizzo If CurrProject.DoorList.Count > 0 Then - DoorManagerViewModel.SelectedDoor = CurrProject.DoorList(0) + DoorManagerViewModel.ChooseSelectedDoor(CurrProject.DoorList(0)) End If m_rfMainWindowViewModel.ProjectNameMsg = CurrProject.Name End If