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 531caaa4..fb29554d 100644 --- a/EgtBEAMWALL.Optimizer/ForcedStrategyBTL/ForcedStrategyBTLVM.vb +++ b/EgtBEAMWALL.Optimizer/ForcedStrategyBTL/ForcedStrategyBTLVM.vb @@ -128,7 +128,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)) @@ -139,7 +139,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 903ffff2..0e7fb9d6 100644 --- a/EgtBEAMWALL.Optimizer/ForcedStrategyPanel/ForcedStrategyPanelVM.vb +++ b/EgtBEAMWALL.Optimizer/ForcedStrategyPanel/ForcedStrategyPanelVM.vb @@ -132,7 +132,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)) @@ -143,7 +143,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 91761598..6a2a2044 100644 --- a/EgtBEAMWALL.Optimizer/MachinePanel/MachinePanelVM.vb +++ b/EgtBEAMWALL.Optimizer/MachinePanel/MachinePanelVM.vb @@ -8,24 +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 - CurrentMachine.InitCurrentMachine(DirectCast(value, MyMachine)) - ' 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 @@ -39,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 @@ -50,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 @@ -100,16 +122,15 @@ 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 StrategyMachineMsg As String + Public ReadOnly Property StrategyManagerMsg As String Get - Return EgtMsg(62569) + Return "StrategyManager" 'EgtMsg(61778) End Get End Property @@ -138,8 +159,8 @@ Public Class MachinePanelVM ' Definizione comandi Private m_cmdBeamTable As ICommand Private m_cmdWallTable As ICommand - Private m_cmdParameterMachine As ICommand - Private m_cmdStrategyMachine As ICommand + Private m_cmdMachineParams As ICommand + Private m_cmdStrategyManager As ICommand #End Region ' Fields & Properties @@ -249,6 +270,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 @@ -270,6 +292,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 @@ -290,6 +313,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 ") @@ -333,20 +357,22 @@ Public Class MachinePanelVM #Region "COMMANDS" -#Region "StrategyMachine" +#Region "MachineParams" - Public ReadOnly Property StrategyMachine_Command As ICommand + ''' + ''' Returns a command that do Exec. + ''' + Public ReadOnly Property MachineParams_Command As ICommand Get - If m_cmdStrategyMachine Is Nothing Then - m_cmdStrategyMachine = New Command(AddressOf StrategyMachineVisibility) + If m_cmdMachineParams Is Nothing Then + m_cmdMachineParams = New Command(AddressOf MachineParams) End If - Return m_cmdStrategyMachine + Return m_cmdMachineParams End Get End Property - Public Sub StrategyMachineVisibility() - Map.refStrategyManagerVM.SetStrategyManager_Visibility(Visibility.Visible) - SetMachine_Visibility(Visibility.Collapsed) + 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) @@ -356,22 +382,24 @@ Public Class MachinePanelVM 'End If End Sub -#End Region ' StrategyMachine +#End Region ' MachineParams -#Region "ParameterMachine" +#Region "StrategyManager" - Public ReadOnly Property ParameterMachine_Command As ICommand + ''' + ''' Returns a command that do Exec. + ''' + Public ReadOnly Property StrategyManager_Command As ICommand Get - If m_cmdParameterMachine Is Nothing Then - m_cmdParameterMachine = New Command(AddressOf ParameterMachineVisibility) + If m_cmdStrategyManager Is Nothing Then + m_cmdStrategyManager = New Command(AddressOf StrategyManager) End If - Return m_cmdParameterMachine + Return m_cmdStrategyManager End Get End Property - Public Sub ParameterMachineVisibility() - SetMachine_Visibility(Visibility.Visible) - Map.refStrategyManagerVM.SetStrategyManager_Visibility(Visibility.Collapsed) + 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) @@ -381,7 +409,7 @@ Public Class MachinePanelVM 'End If End Sub -#End Region ' ParameterMachine +#End Region ' StrategyManager #End Region ' COMMANDS diff --git a/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml b/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml index 9ce162e4..d6a18dd8 100644 --- a/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml +++ b/EgtBEAMWALL.Optimizer/MachinePanel/OnlyProdMachinePanelV.xaml @@ -42,82 +42,26 @@ ToolTip="{Binding SetUpToolTip}" Style="{StaticResource GeneralConfigurationToolBar_TextButton}" Visibility="{Binding SetUp_Visibility}"/> - - - - + diff --git a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowM.vb b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowM.vb index 33c592cd..1ba7c920 100644 --- a/EgtBEAMWALL.Optimizer/MainWindow/MainWindowM.vb +++ b/EgtBEAMWALL.Optimizer/MainWindow/MainWindowM.vb @@ -493,32 +493,32 @@ Public Class MainWindowM Return -1 End Function - ''' - ''' Funzione che recupera il tipo di progetto - ''' - ''' - Private Function GetProdType() As BWType - ' Recupero CurrProd - Dim currProd As Integer = GetCurrProd() - ProjectManagerVM.SetCurrProd(currProd) - If Not IsNothing(ProjectManagerVM.CurrProd) Then - Return ProjectManagerVM.CurrProd.nType - Else - Return BWType.NULL - End If - End Function + '''' + '''' Funzione che recupera il tipo di progetto + '''' + '''' + 'Private Function GetProdType() As BWType + ' ' Recupero CurrProd + ' Dim currProd As Integer = GetCurrProd() + ' ProjectManagerVM.SetCurrProd(currProd) + ' If Not IsNothing(ProjectManagerVM.CurrProd) Then + ' Return ProjectManagerVM.CurrProd.nType + ' Else + ' Return BWType.NULL + ' End If + 'End Function ''' ''' Fuzione che recupera la cartella dove salvare il file json CustomerConfig ''' ''' - Friend Function GetAISetupDirPath(StrategyType As BWType) As String + Friend Function GetAISetupDirPath(StrategyType As BWType, bProdPage As Boolean) As String ' Percorso SetUpDir Dim sAISetUpDir As String = String.Empty If StrategyType = BWType.BEAM Then - sAISetUpDir = sMachinesRoot & "\" & CurrentMachine.sMachineName & "\" & BEAM_DIR & "\" & AISETUP_DIR + sAISetUpDir = sMachinesRoot & "\" & If(bProdPage, CurrentMachine.sMachineName, Map.refMachinePanelVM.SelectedMachine.Name) & "\" & BEAM_DIR & "\" & AISETUP_DIR ElseIf StrategyType = BWType.WALL Then - sAISetUpDir = sMachinesRoot & "\" & CurrentMachine.sMachineName & "\" & WALL_DIR & "\" & AISETUP_DIR + sAISetUpDir = sMachinesRoot & "\" & If(bProdPage, CurrentMachine.sMachineName, Map.refMachinePanelVM.SelectedMachine.Name) & "\" & WALL_DIR & "\" & AISETUP_DIR End If ' Controllo se la cartella AISetup è presente If Not Directory.Exists(sAISetUpDir) Then @@ -545,15 +545,17 @@ Public Class MainWindowM ''' Funzione che recupera il percorso della cartella Standard ''' ''' - Friend Function GetStandardDirPath() As String - ' Recupero tipo progetto - Dim nProdType As BWType = GetProdType() - If nProdType = BWType.BEAM Then - Return sBeamRoot & "\" & STRATEGIES_DIR & "\" & STANDARD_DIR - ElseIf nProdType = BWType.WALL Then - Return sWallRoot & "\" & STRATEGIES_DIR & "\" & STANDARD_DIR - End If - Return String.Empty + Friend Function GetStandardDirPath(StrategyType As BWType) As String + Return GetStrategiesDirPath(StrategyType) & "\" & STANDARD_DIR + + '' Recupero tipo progetto + 'Dim nProdType As BWType = GetProdType() + 'If nProdType = BWType.BEAM Then + ' Return sBeamRoot & "\" & STRATEGIES_DIR & "\" & STANDARD_DIR + 'ElseIf nProdType = BWType.WALL Then + ' Return sWallRoot & "\" & STRATEGIES_DIR & "\" & STANDARD_DIR + 'End If + 'Return String.Empty End Function #End Region ' METHODS diff --git a/EgtBEAMWALL.Optimizer/OptimizePanel/OnlyProdOptimizePanelV.xaml b/EgtBEAMWALL.Optimizer/OptimizePanel/OnlyProdOptimizePanelV.xaml index be479f1b..da224846 100644 --- a/EgtBEAMWALL.Optimizer/OptimizePanel/OnlyProdOptimizePanelV.xaml +++ b/EgtBEAMWALL.Optimizer/OptimizePanel/OnlyProdOptimizePanelV.xaml @@ -14,4 +14,5 @@ Style="{StaticResource ToolBarWarehouse_Button}"> + 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 6a4e571a..1fc25d87 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 80a325b7..a8478a11 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)) @@ -177,19 +187,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 - Update() - 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 @@ -209,8 +220,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))) @@ -521,11 +546,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) @@ -560,7 +585,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 @@ -698,10 +723,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() @@ -904,7 +931,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