From c986f468616c6c3f1a9cb4466633a95e1dcd6888 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Thu, 18 Sep 2025 12:59:57 +0200 Subject: [PATCH] - gestita pagina configurazione macchina - migliorato caricamento strategie --- .../BTLDataWnd/BTLDataWndVM.vb | 2 +- .../OnlyProdConfigurationPageV.xaml | 2 +- .../ForcedStrategyBTL/ForcedStrategyBTLVM.vb | 4 +- .../ForcedStrategyPanelVM.vb | 4 +- .../MachinePanel/MachinePanelVM.vb | 124 +++++++++++++----- .../MachinePanel/OnlyProdMachinePanelV.xaml | 13 +- .../MainWindow/MainWindowM.vb | 54 ++++---- .../OptimizePanel/OnlyProdOptimizePanelV.xaml | 1 + .../SaveAsStrategyWnd/SaveAsStrategyVM.vb | 2 +- .../SceneHost/MySceneHostVM.vb | 4 +- .../JsonAvailableStrategyHelper.vb | 15 ++- .../StrategyManager/StrategyManagerVM.vb | 62 ++++++--- 12 files changed, 192 insertions(+), 95 deletions(-) diff --git a/EgtBEAMWALL.Optimizer/BTLDataWnd/BTLDataWndVM.vb b/EgtBEAMWALL.Optimizer/BTLDataWnd/BTLDataWndVM.vb index 879ca0f6..01944709 100644 --- a/EgtBEAMWALL.Optimizer/BTLDataWnd/BTLDataWndVM.vb +++ b/EgtBEAMWALL.Optimizer/BTLDataWnd/BTLDataWndVM.vb @@ -519,7 +519,7 @@ Public Class BTLDataWndVM Sub New(nProjId As Integer) ' leggo cartella dei setup delle strategie - Dim AISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType) + Dim AISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType, True) Dim AISetupPaths As String() = Directory.GetFiles(AISetupDirPath) For Each AiSetup In AISetupPaths m_StrategySetupList.Add(Path.GetFileNameWithoutExtension(AiSetup)) diff --git a/EgtBEAMWALL.Optimizer/ConfigurationPage/OnlyProdConfigurationPageV.xaml b/EgtBEAMWALL.Optimizer/ConfigurationPage/OnlyProdConfigurationPageV.xaml index 9fc8f221..b8d0c15e 100644 --- a/EgtBEAMWALL.Optimizer/ConfigurationPage/OnlyProdConfigurationPageV.xaml +++ b/EgtBEAMWALL.Optimizer/ConfigurationPage/OnlyProdConfigurationPageV.xaml @@ -42,7 +42,7 @@ - + diff --git a/EgtBEAMWALL.Optimizer/ForcedStrategyBTL/ForcedStrategyBTLVM.vb b/EgtBEAMWALL.Optimizer/ForcedStrategyBTL/ForcedStrategyBTLVM.vb index 82b7d004..b4121c2d 100644 --- a/EgtBEAMWALL.Optimizer/ForcedStrategyBTL/ForcedStrategyBTLVM.vb +++ b/EgtBEAMWALL.Optimizer/ForcedStrategyBTL/ForcedStrategyBTLVM.vb @@ -104,7 +104,7 @@ Public Class ForcedStrategyBTLVM End If If IsNothing(JsonAvailableTopology) Then Return False m_StrategyList = New ObservableCollection(Of Strategy)((From JsonAvailableStrategy In JsonAvailableTopology.StrategyList - Select JsonAvailableStrategy.Deserialize(-1)).ToList()) + Select JsonAvailableStrategy.Deserialize(ProjectManagerVM.CurrProd.nType, -1)).ToList()) End If ' recupero custom Dim nPartId As Integer = EgtGetParent(EgtGetParent(nFeatureId)) @@ -115,7 +115,7 @@ Public Class ForcedStrategyBTLVM EgtGetInfo(nBTLInfoLayerId, "AISETUP", sStrategySetupName) If Not String.IsNullOrWhiteSpace(sStrategySetupName) Then ' carico custom - Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType) + Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType, True) Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sStrategySetupName & ".json" If File.Exists(sStrategyConfigurationFilePath) Then Dim sReadedFile As String = File.ReadAllText(sStrategyConfigurationFilePath) diff --git a/EgtBEAMWALL.Optimizer/ForcedStrategyPanel/ForcedStrategyPanelVM.vb b/EgtBEAMWALL.Optimizer/ForcedStrategyPanel/ForcedStrategyPanelVM.vb index 156dc430..0427106d 100644 --- a/EgtBEAMWALL.Optimizer/ForcedStrategyPanel/ForcedStrategyPanelVM.vb +++ b/EgtBEAMWALL.Optimizer/ForcedStrategyPanel/ForcedStrategyPanelVM.vb @@ -104,7 +104,7 @@ Public Class ForcedStrategyPanelVM End If If IsNothing(JsonAvailableTopology) Then Return False m_StrategyList = New ObservableCollection(Of Strategy)((From JsonAvailableStrategy In JsonAvailableTopology.StrategyList - Select JsonAvailableStrategy.Deserialize(-1)).ToList()) + Select JsonAvailableStrategy.Deserialize(ProjectManagerVM.CurrProd.nType, -1)).ToList()) End If ' recupero custom Dim nPartId As Integer = EgtGetParent(EgtGetParent(nFeatureId)) @@ -115,7 +115,7 @@ Public Class ForcedStrategyPanelVM EgtGetInfo(nBTLInfoLayerId, "AISETUP", sStrategySetupName) If Not String.IsNullOrWhiteSpace(sStrategySetupName) Then ' carico custom - Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType) + Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType, True) Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sStrategySetupName & ".json" If File.Exists(sStrategyConfigurationFilePath) Then Dim sReadedFile As String = File.ReadAllText(sStrategyConfigurationFilePath) diff --git a/EgtBEAMWALL.Optimizer/MachinePanel/MachinePanelVM.vb b/EgtBEAMWALL.Optimizer/MachinePanel/MachinePanelVM.vb index 9a892ed5..92067fa9 100644 --- a/EgtBEAMWALL.Optimizer/MachinePanel/MachinePanelVM.vb +++ b/EgtBEAMWALL.Optimizer/MachinePanel/MachinePanelVM.vb @@ -8,23 +8,32 @@ Public Class MachinePanelVM #Region "FIELDS & PROPERTIES" + Private Enum ConfigTabs As Integer + EMPTY = 0 + STRATEGYMANAGER = 1 + MACHINEPARAMS = 2 + End Enum + ' Radice del direttorio delle macchine Private m_sMachinesRoot As String ' Macchina correntemente selezionata e quindi attiva Private m_SelectedMachine As Machine = Nothing - Public Overrides Property SelectedMachine As Machine + Public Shadows Property SelectedMachine As MyMachine Get Return m_SelectedMachine End Get - Set(value As Machine) + Set(value As MyMachine) If value IsNot m_SelectedMachine Then ' imposto macchina in DbGeometrico If Not IsNothing(value) AndAlso EgtSetCurrMachine(value.Name) Then m_SelectedMachine = value + ' crea l'elenco dei parametri della macchina corrente + SelectedMachine.CreateMachParams() + ' aggiorno lista strategie + Map.refStrategyManagerVM.Update() End If - ' crea l'elenco dei parametri della macchina corrente - DirectCast(value, MyMachine).CreateMachParams() + NotifyPropertyChanged(NameOf(SelectedMachine)) ' Salvo impostazione macchina corrente ' SaveCurrentMachine() ' inizializzo la macchina selezionata come macchina corrente @@ -38,6 +47,20 @@ Public Class MachinePanelVM End Set End Property + Private m_nSelTab As ConfigTabs + Public Property nSelTab As Integer + Get + Return m_nSelTab + End Get + Set(value As Integer) + m_nSelTab = value + End Set + End Property + Private Sub SetSelTab(nValue As ConfigTabs) + m_nSelTab = nValue + NotifyPropertyChanged(NameOf(nSelTab)) + End Sub + Private m_MachPanel_IsEnabled As Boolean = True Public Property MachPanel_IsEnabled As Boolean Get @@ -49,19 +72,19 @@ Public Class MachinePanelVM End Set End Property - Private m_BeamTable_Visibility As Visibility - Public ReadOnly Property BeamTable_Visibility As Visibility - Get - Return m_BeamTable_Visibility - End Get - End Property + 'Private m_BeamTable_Visibility As Visibility + 'Public ReadOnly Property BeamTable_Visibility As Visibility + ' Get + ' Return m_BeamTable_Visibility + ' End Get + 'End Property - Private m_WallTable_Visibility As Visibility - Public ReadOnly Property WallTable_Visibility As Visibility - Get - Return m_WallTable_Visibility - End Get - End Property + 'Private m_WallTable_Visibility As Visibility + 'Public ReadOnly Property WallTable_Visibility As Visibility + ' Get + ' Return m_WallTable_Visibility + ' End Get + 'End Property Public ReadOnly Property SetUp_Visibility As Visibility Get @@ -86,11 +109,16 @@ Public Class MachinePanelVM Return EgtMsg(90933) End Get End Property - Public ReadOnly Property ParameterMachineMsg As String + Public ReadOnly Property MachineParamsMsg As String Get Return EgtMsg(61778) End Get End Property + Public ReadOnly Property StrategyManagerMsg As String + Get + Return "StrategyManager" 'EgtMsg(61778) + End Get + End Property #End Region ' Messages @@ -117,7 +145,8 @@ Public Class MachinePanelVM ' Definizione comandi Private m_cmdBeamTable As ICommand Private m_cmdWallTable As ICommand - Private m_cmdParameterMachine As ICommand + Private m_cmdMachineParams As ICommand + Private m_cmdStrategyManager As ICommand #End Region 'FIELDS & PROPERTIES @@ -227,6 +256,7 @@ Public Class MachinePanelVM End Function Public Overrides Sub ToolDb(ByVal param As Object) + SetSelTab(ConfigTabs.EMPTY) If Not VerifyMachinesDir(m_sMachinesRoot) Then Return ' ricarico il database per intercettare eventuali aggiornamenti fatti da altre istanze del programma (se la cartella Machines è condivisa) If Not EgtTdbReload() Then @@ -248,6 +278,7 @@ Public Class MachinePanelVM End Sub Public Overrides Sub MachDb(ByVal param As Object) + SetSelTab(ConfigTabs.EMPTY) If Not VerifyMachinesDir(m_sMachinesRoot) Then Return ' ricarico il database per intercettare eventuali aggiornamenti fatti da altre istanze del programma (se la cartella Machines è condivisa) If Not EgtMdbReload() Then @@ -268,6 +299,7 @@ Public Class MachinePanelVM End Sub Public Overrides Sub SetUp(ByVal param As Object) + SetSelTab(ConfigTabs.EMPTY) ' verifico che il file di configurazione attrezzaggio (lua) della macchina esista If Not File.Exists(CurrentMachine.sMachDir & "\Scripts\" & SETUP_LUA) Then EgtOutLog("SetUp error: SetUp configuration file doesn't exist ") @@ -312,31 +344,59 @@ Public Class MachinePanelVM #Region "COMMANDS" -#Region "ParameterMachine" +#Region "MachineParams" ''' ''' Returns a command that do Exec. ''' - Public ReadOnly Property ParameterMachine_Command As ICommand + Public ReadOnly Property MachineParams_Command As ICommand Get - If m_cmdParameterMachine Is Nothing Then - m_cmdParameterMachine = New Command(AddressOf ParameterMachineVisibility) + If m_cmdMachineParams Is Nothing Then + m_cmdMachineParams = New Command(AddressOf MachineParams) End If - Return m_cmdParameterMachine + Return m_cmdMachineParams End Get End Property - Public Sub ParameterMachineVisibility() - If Map.refConfigurationPageVM.m_MachineParameter_Visibility Then - Map.refConfigurationPageVM.SetMachineParameter_Visibility(Visibility.Visible) - Map.refConfigurationPageVM.SetMachine_Visibility(Visibility.Visible) - Else - Map.refConfigurationPageVM.SetMachineParameter_Visibility(Visibility.Collapsed) - Map.refConfigurationPageVM.SetMachine_Visibility(Visibility.Collapsed) - End If + Public Sub MachineParams() + SetSelTab(ConfigTabs.MACHINEPARAMS) + 'If Map.refConfigurationPageVM.m_MachineParameter_Visibility Then + ' Map.refConfigurationPageVM.SetMachineParameter_Visibility(Visibility.Visible) + ' Map.refConfigurationPageVM.SetMachine_Visibility(Visibility.Visible) + 'Else + ' Map.refConfigurationPageVM.SetMachineParameter_Visibility(Visibility.Collapsed) + ' Map.refConfigurationPageVM.SetMachine_Visibility(Visibility.Collapsed) + 'End If End Sub -#End Region ' ParameterMachine +#End Region ' MachineParams + +#Region "StrategyManager" + + ''' + ''' Returns a command that do Exec. + ''' + Public ReadOnly Property StrategyManager_Command As ICommand + Get + If m_cmdStrategyManager Is Nothing Then + m_cmdStrategyManager = New Command(AddressOf StrategyManager) + End If + Return m_cmdStrategyManager + End Get + End Property + + Public Sub StrategyManager() + SetSelTab(ConfigTabs.STRATEGYMANAGER) + 'If Map.refConfigurationPageVM.m_MachineParameter_Visibility Then + ' Map.refConfigurationPageVM.SetMachineParameter_Visibility(Visibility.Visible) + ' Map.refConfigurationPageVM.SetMachine_Visibility(Visibility.Visible) + 'Else + ' Map.refConfigurationPageVM.SetMachineParameter_Visibility(Visibility.Collapsed) + ' Map.refConfigurationPageVM.SetMachine_Visibility(Visibility.Collapsed) + 'End If + End Sub + +#End Region ' StrategyManager #End Region ' COMMANDS diff --git a/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml b/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml index 690c0647..d0f60fae 100644 --- a/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml +++ b/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml @@ -42,19 +42,24 @@ ToolTip="{Binding SetUpToolTip}" Style="{StaticResource GeneralConfigurationToolBar_TextButton}" Visibility="{Binding SetUp_Visibility}"/> - + diff --git a/EgtBEAMWALL.Optimizer/SaveAsStrategyWnd/SaveAsStrategyVM.vb b/EgtBEAMWALL.Optimizer/SaveAsStrategyWnd/SaveAsStrategyVM.vb index 3144e733..558528f4 100644 --- a/EgtBEAMWALL.Optimizer/SaveAsStrategyWnd/SaveAsStrategyVM.vb +++ b/EgtBEAMWALL.Optimizer/SaveAsStrategyWnd/SaveAsStrategyVM.vb @@ -163,7 +163,7 @@ Public Class SaveAsStrategyVM ''' Funzione che salva il file json CustomerConfig ''' Public Sub SaveAs() - Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType) + Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType, False) Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sFileNameCustomConfig & ".json" Dim Strategy As New StrategySetup(sFileNameCustomConfig) Map.refStrategyManagerVM.SelStrategySetup = Strategy diff --git a/EgtBEAMWALL.Optimizer/SceneHost/MySceneHostVM.vb b/EgtBEAMWALL.Optimizer/SceneHost/MySceneHostVM.vb index 213a74b5..6b0aed7a 100644 --- a/EgtBEAMWALL.Optimizer/SceneHost/MySceneHostVM.vb +++ b/EgtBEAMWALL.Optimizer/SceneHost/MySceneHostVM.vb @@ -73,8 +73,8 @@ Public Class MySceneHostVM EgtInitBeamMgr(EIB_FL.TS3_POS + EIB_FL.USEUATTR) ' inizializzo gestore lavorazioni EgtInitMachMgr(Map.refMainWindowVM.MainWindowM.sMachinesRoot, Map.refMainWindowVM.MainWindowM.sToolMakersDir) - ' Seleziono la macchina impostata nel file ini - Map.refMachinePanelVM.LoadCurrentMachine() + '' Seleziono la macchina impostata nel file ini + 'Map.refMachinePanelVM.LoadCurrentMachine() Return End If ' Problemi diff --git a/EgtBEAMWALL.Optimizer/StrategyManager/JsonAvailableStrategyHelper.vb b/EgtBEAMWALL.Optimizer/StrategyManager/JsonAvailableStrategyHelper.vb index 8a6f39a7..bc819d9f 100644 --- a/EgtBEAMWALL.Optimizer/StrategyManager/JsonAvailableStrategyHelper.vb +++ b/EgtBEAMWALL.Optimizer/StrategyManager/JsonAvailableStrategyHelper.vb @@ -3,6 +3,7 @@ Imports EgtUILib Imports Newtonsoft.Json Imports System.Collections.ObjectModel Imports System.IO +Imports EgtBEAMWALL.Core.ConstBeam '----------- Classe che fa riferimento alle Feature del file Json ----------- Public Class JsonAvailableStrategyFeature @@ -74,12 +75,12 @@ Public Class JsonAvailableStrategyFeature Next End Sub - Friend Function Deserialize() As StrategyFeature + Friend Function Deserialize(StrategyType As BWType) As StrategyFeature Dim StrategyFeature As New StrategyFeature() With {.sName = m_sName, .nPrc = m_nPrc, .nGrp = m_nGrp} For Each Topology In TopologyList - StrategyFeature.TopologyList.Add(Topology.Deserialize()) + StrategyFeature.TopologyList.Add(Topology.Deserialize(StrategyType)) Next Return StrategyFeature End Function @@ -134,10 +135,10 @@ Public Class JsonAvailableTopology #End Region ' Constructor - Friend Function Deserialize() As Topology + Friend Function Deserialize(StrategyType As BWType) As Topology Dim Topology As New Topology() With {.sName = m_sName} For StrategyIndex = 0 To StrategyList.Count - 1 - Topology.StrategyList.Add(StrategyList(StrategyIndex).Deserialize(StrategyIndex)) + Topology.StrategyList.Add(StrategyList(StrategyIndex).Deserialize(StrategyType, StrategyIndex)) Next Topology.CreateStrategyViews() Return Topology @@ -177,11 +178,11 @@ Public Class JsonAvailableStrategy #End Region ' Constructor - Friend Function Deserialize(StrategyIndex As Integer) As Strategy + Friend Function Deserialize(StrategyType As BWType, StrategyIndex As Integer) As Strategy Dim Strategy As New Strategy() With {.sStrategyId = m_sStrategyId, .nIndexInList = StrategyIndex} ' Recupero file StrategyJson - Dim StrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath() & "\" & sStrategyId & "\" & sStrategyId & ".json" + Dim StrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath(StrategyType) & "\" & sStrategyId & "\" & sStrategyId & ".json" ' Controllo se il file esiste If Not File.Exists(StrategyPath) Then EgtOutLog("Error! Strategy file not found! " & m_sStrategyId) @@ -190,7 +191,7 @@ Public Class JsonAvailableStrategy Dim StrategyJson As String = File.ReadAllText(StrategyPath) Dim strategyConfig As JsonDefaultStrategy = JsonConvert.DeserializeObject(Of JsonDefaultStrategy)(StrategyJson) Strategy.sStrategyName = strategyConfig.sStrategyName - Dim sImagePath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath() & "\" & sStrategyId & "\" & sStrategyId & ".png" + Dim sImagePath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath(StrategyType) & "\" & sStrategyId & "\" & sStrategyId & ".png" If File.Exists(sImagePath) Then Strategy.sStrategyImagePath = sImagePath End If diff --git a/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb b/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb index d9a98c96..1f29d2ca 100644 --- a/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb +++ b/EgtBEAMWALL.Optimizer/StrategyManager/StrategyManagerVM.vb @@ -26,6 +26,11 @@ Public Class StrategyManagerVM End Get Set(value As IdNameStruct) m_SelStrategyType = value + ' deseleziono eventuale strategia selezionata + If Not IsNothing(m_SelTreeItem) Then + m_SelTreeItem.IsSelected = False + 'SelTreeItem = Nothing + End If End Set End Property @@ -42,6 +47,11 @@ Public Class StrategyManagerVM Return m_SelStrategySetup End Get Set(value As StrategySetup) + ' deseleziono eventuale strategia precedentemente selezionata + If Not IsNothing(m_SelTreeItem) Then + m_SelTreeItem.IsSelected = False + 'SelTreeItem = Nothing + End If m_SelStrategySetup = value m_SelStrategySetup.Read() NotifyPropertyChanged(NameOf(SelStrategySetup)) @@ -167,18 +177,20 @@ Public Class StrategyManagerVM Sub New() ' Setto riferimento Map.SetRefStrategyManagerVM(Me) - ' imposto Type a primo della lista per default - Select Case CurrentMachine.nType - Case MachineType.BEAM - m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.BEAM) - Case MachineType.WALL - m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.WALL) - Case MachineType.BOTH - m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.BEAM) - End Select - NotifyPropertyChanged(NameOf(StrategyType_Visibility)) + '' imposto Type a primo della lista per default + 'Select Case CurrentMachine.nType + ' Case MachineType.BEAM + ' m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.BEAM) + ' Case MachineType.WALL + ' m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.WALL) + ' Case MachineType.BOTH + ' m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.BEAM) + 'End Select + 'NotifyPropertyChanged(NameOf(StrategyType_Visibility)) ' Assegno riferimento funzione per aggiornare elemento selezionato dall'albero Topology.refUpdateSelTreeItem = AddressOf UpdateSelTreeItem + '' aggiorno liste + 'Update() End Sub #End Region ' Constructor @@ -198,8 +210,22 @@ Public Class StrategyManagerVM End Sub Friend Sub Update() + ' imposto Type a primo della lista per default + Select Case Map.refMachinePanelVM.SelectedMachine.nType + Case MachineType.BEAM + m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.BEAM) + Case MachineType.WALL + m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.WALL) + Case MachineType.BOTH + If Not IsNothing(ProjectManagerVM.CurrProd) Then + m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = ProjectManagerVM.CurrProd.nType) + Else + m_SelStrategyType = m_StrategyTypeList.FirstOrDefault(Function(x) x.Id = BWType.BEAM) + End If + End Select + NotifyPropertyChanged(NameOf(StrategyType_Visibility)) ' leggo cartella dei setup delle strategie - Dim AISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(SelStrategyType.Id) + Dim AISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(SelStrategyType.Id, False) Dim AISetupPaths As String() = Directory.GetFiles(AISetupDirPath) For Each AiSetup In AISetupPaths m_StrategySetupList.Add(New StrategySetup(Path.GetFileNameWithoutExtension(AiSetup))) @@ -510,11 +536,11 @@ Public Class StrategySetup Dim sReadedFile As String = File.ReadAllText(sAvailableStrategiesFilePath) Dim JsonStrategyFeatureList As List(Of JsonAvailableStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonAvailableStrategyFeature))(sReadedFile) m_StrategyFeatureList = New ObservableCollection(Of StrategyFeature)((From JsonStrategyFeature In JsonStrategyFeatureList - Select JsonStrategyFeature.Deserialize()).ToList()) + Select JsonStrategyFeature.Deserialize(Map.refStrategyManagerVM.SelStrategyType.Id)).ToList()) End If ' carico custom - Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(Map.refStrategyManagerVM.SelStrategyType.Id) + Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(Map.refStrategyManagerVM.SelStrategyType.Id, False) Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sName & ".json" If File.Exists(sStrategyConfigurationFilePath) Then Dim sReadedFile As String = File.ReadAllText(sStrategyConfigurationFilePath) @@ -549,7 +575,7 @@ Public Class StrategySetup JsonFromStrategyManager.Add(StrategyFeature.Serialize()) Next Dim JsonFromStrategy As String = JsonConvert.SerializeObject(JsonFromStrategyManager, Formatting.Indented) - Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(Map.refStrategyManagerVM.SelStrategyType.Id) + Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(Map.refStrategyManagerVM.SelStrategyType.Id, False) Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sName & ".json" File.WriteAllText(sStrategyConfigurationFilePath, JsonFromStrategy) End Sub @@ -687,10 +713,12 @@ Public Class Topology End Get Set(value As Boolean) m_bIsSelected = value - refUpdateSelTreeItem(Me) - If Not value Then + If value Then + refUpdateSelTreeItem(Me) + Else SelActiveStrategy = Nothing SelAvailableStrategy = Nothing + m_StrategyList.Clear() End If m_AvailableStrategyList_View.Refresh() m_ActiveStrategyList_View.Refresh() @@ -896,7 +924,7 @@ Public Class Strategy ''' Friend Sub ReadConfigurationStrategyJson() ' Recupero file StrategyJson - Dim StrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath() & "\" & sStrategyId & "\" & sStrategyId & ".json" + Dim StrategyPath As String = Map.refMainWindowVM.MainWindowM.GetStandardDirPath(Map.refStrategyManagerVM.SelStrategyType.Id) & "\" & sStrategyId & "\" & sStrategyId & ".json" ' Controllo se il file esiste If Not File.Exists(StrategyPath) Then Return ' Leggo il contenuto del file JSON e deserializzo