diff --git a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowV.xaml.vb b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowV.xaml.vb index f1dcb384..2dd746a6 100644 --- a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowV.xaml.vb +++ b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowV.xaml.vb @@ -43,6 +43,11 @@ Public Class MainWindowV e.Cancel = True Return End If + If Map.refProjectVM.bCalcRunning Then + EgtBEAMWALL.Core.EgtMessageBoxV.Show(Application.Current.MainWindow, EgtMsg(63047), EgtMsg(15001), MessageBoxButton.OK, MessageBoxImage.Error) + e.Cancel = True + Return + End If If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then e.Cancel = True Return diff --git a/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb b/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb index 7827302c..d7e4be1f 100644 --- a/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb +++ b/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb @@ -493,11 +493,17 @@ Public Class StrategyManagerVM Dim IndexActiveStrategy As Integer = m_SelTreeItem.StrategyList.IndexOf(m_SelTreeItem.SelActiveStrategy) ' Recupero indice elemento selezionato in lista Dim NewIndexActiveStrategy As Integer = IndexActiveStrategy - 1 + ' Setto indice per capire che la strategia è stata spostata in StrategyList + m_SelTreeItem.SelActiveStrategy.nIndexInList = NewIndexActiveStrategy ' Se l'indice è maggiore di 0 If IndexActiveStrategy > 0 Then ' Muovo l'elemento selezionato sopra di 1 m_SelTreeItem.StrategyList.Move(IndexActiveStrategy, NewIndexActiveStrategy) End If + ' Riallinea tutti gli indici + For Index As Integer = 0 To m_SelTreeItem.StrategyList.Count - 1 + m_SelTreeItem.StrategyList(Index).nIndexInList = Index + Next ' Setto a true booleano per modifica SetbIsModifyStrategy(True) ' Aggiorno la lista @@ -526,11 +532,17 @@ Public Class StrategyManagerVM Dim IndexActiveStrategy As Integer = m_SelTreeItem.StrategyList.IndexOf(m_SelTreeItem.SelActiveStrategy) ' Recupero indice elemento selezionato in lista Dim NewIndexActiveStrategy As Integer = IndexActiveStrategy + 1 + ' Setto indice per capire che la strategia è stata spostata in StrategyList + m_SelTreeItem.SelActiveStrategy.nIndexInList = NewIndexActiveStrategy ' Se l'indice è maggiore di 0 If IndexActiveStrategy >= 0 Then ' Muovo l'elemento selezionato sopra di 1 m_SelTreeItem.StrategyList.Move(IndexActiveStrategy, NewIndexActiveStrategy) End If + ' Riallinea tutti gli indici + For Index As Integer = 0 To m_SelTreeItem.StrategyList.Count - 1 + m_SelTreeItem.StrategyList(Index).nIndexInList = Index + Next ' Setto a true booleano per modifica SetbIsModifyStrategy(True) ' Aggiorno la lista @@ -990,10 +1002,7 @@ Public Class Topology m_sName = JsonTopology.sName m_sImage = JsonTopology.sImage m_StrategyList = New ObservableCollection(Of Strategy)(JsonTopology.StrategyList.Select(Function(jsonStrategy) New Strategy(jsonStrategy))) - m_AvailableStrategyList_View = New ListCollectionView(StrategyList) - m_AvailableStrategyList_View.Filter = AddressOf AvailableStrategyFilter - m_ActiveStrategyList_View = New ListCollectionView(StrategyList) - m_ActiveStrategyList_View.Filter = AddressOf ActiveStrategyFilter + CreateStrategyViews() NotifyPropertyChanged(NameOf(StrategyList)) End Sub @@ -1012,8 +1021,10 @@ Public Class Topology Friend Sub CreateStrategyViews() m_AvailableStrategyList_View = New ListCollectionView(StrategyList) m_AvailableStrategyList_View.Filter = AddressOf AvailableStrategyFilter + m_AvailableStrategyList_View.SortDescriptions.Add(New SortDescription("nIndexInList", ListSortDirection.Ascending)) m_ActiveStrategyList_View = New ListCollectionView(StrategyList) m_ActiveStrategyList_View.Filter = AddressOf ActiveStrategyFilter + m_ActiveStrategyList_View.SortDescriptions.Add(New SortDescription("nIndexInList", ListSortDirection.Ascending)) End Sub Friend Function Serialize() As JsonTopology