From 3752846faab65dd40b82c5c6cfea4e6eb12e4564 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Thu, 24 Feb 2022 20:37:30 +0100 Subject: [PATCH] - introdotta apertura ottimizzatore con progetto specificato da riga di comando --- .../SupervisorManager/SupervisorManagerVM.vb | 4 +- .../MainMenu/MainMenuVM.vb | 65 ++++++++++--------- .../MainWindow/MainWindowVM.vb | 62 ++++++++++-------- 3 files changed, 70 insertions(+), 61 deletions(-) diff --git a/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb b/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb index e3f1fc3f..80fca4de 100644 --- a/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb +++ b/EgtBEAMWALL.Supervisor/SupervisorManager/SupervisorManagerVM.vb @@ -356,7 +356,7 @@ Public Class SupervisorManagerVM Else Dim sOptimizerPath As String = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory) & "\" & sOptimizerName & ".exe" Try - Process.Start(sOptimizerPath) + Process.Start(sOptimizerPath, "1 " & CurrProd.nProdId) Catch ex As Exception EgtOutLog("Error: impossible starting optimizer from path " & sOptimizerPath) End Try @@ -365,7 +365,7 @@ Public Class SupervisorManagerVM DbControllers.m_StatusMapController.UpdateAction(DbControllers.m_SupervisorId, Map.refSupervisorManagerVM.CurrProd.nProdId, Map.refSupervisorManagerVM.CurrProd.nProdId, StatusMapItemType.Comm, StatusMapOpType.ChangeProdInProdRequest, "") End Sub -#End Region ' GoToSupervisor +#End Region ' GoToProd #End Region ' Commands diff --git a/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb b/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb index 25b79108..c227ec38 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MainMenu/MainMenuVM.vb @@ -288,38 +288,6 @@ Public Class MainMenuVM End Function Private Function InitMACHINING() As Boolean - Map.refProjectVM.SetBottomPanel_Visibility(False) - Map.refProjectVM.SetLeftPanel_Visibility(True) - Map.refLeftPanelVM.UpdateView() - Map.refProjectVM.SetPartManager_Visibility(False) - Map.refProjectVM.SetFeatureManager_Visibility(False) - Map.refProjectVM.SetTopPanel_Visibility(True) - Map.refProjectVM.SetShowBeamPanel_Visibility(False) - Map.refProjectVM.SetProjManager_Visibility(False) - Map.refProjectVM.SetProdManager_Visibility(True) - Map.refProjectVM.SetOptimizePanel_Visibility(True) - Map.refProjectVM.NotifyAllPanelVisibility() - Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(False) - Map.refTopPanelVM.UpdateQParameterVisibility() - ' aggiorno la visibilità delle colonne - For Each col In Map.refFeatureListVM.FeatureColumns - col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) - Next - For Each col In Map.refRawPartListVM.RawPartColumns - col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) - Next - For Each col In Map.refFeatureInPartInRawPartListVM.FeatureInPartInRawPartColumns - col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) - Next - For Each col In Map.refPartInRawPartListVM.PartInRawPartColumns - col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) - Next - For Each col In Map.refStatisticsVM.OptimizerStatisticsColumns - col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) - Next - If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then - Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Collapsed - End If ' imposto dimensioni colonne/righe della Grid DimensionsIniFile.ReadGridDimensions(ConstDims.PROJECT_OPTIMIZER, Map.refProjectVM.GridDims) DimensionsIniFile.ReadGridDimensions(ConstDims.LEFTPANEL_OPTIMIZER, Map.refLeftPanelVM.GridDims) @@ -384,6 +352,39 @@ Public Class MainMenuVM Map.refMainMenuVM.NotifyPropertyChanged(NameOf(Map.refMainMenuVM.SendFeedbackIsEnabled)) Map.refInstrumentPanelVM.NotifyPropertyChanged(NameOf(Map.refInstrumentPanelVM.ChangeParam_Visibility)) Map.refTopPanelVM.NotifyPropertyChanged(NameOf(Map.refTopPanelVM.MovePart_Visibility)) + ' aggiorno visibilita' degli elementi grafici + Map.refProjectVM.SetBottomPanel_Visibility(False) + Map.refProjectVM.SetLeftPanel_Visibility(True) + Map.refLeftPanelVM.UpdateView() + Map.refProjectVM.SetPartManager_Visibility(False) + Map.refProjectVM.SetFeatureManager_Visibility(False) + Map.refProjectVM.SetTopPanel_Visibility(True) + Map.refProjectVM.SetShowBeamPanel_Visibility(False) + Map.refProjectVM.SetProjManager_Visibility(False) + Map.refProjectVM.SetProdManager_Visibility(True) + Map.refProjectVM.NotifyAllPanelVisibility() + Map.refCALCPanelVM.SetChooseMachineBtn_Visibility(False) + Map.refTopPanelVM.UpdateQParameterVisibility() + ' aggiorno la visibilità delle colonne + For Each col In Map.refFeatureListVM.FeatureColumns + col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) + Next + For Each col In Map.refRawPartListVM.RawPartColumns + col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) + Next + For Each col In Map.refFeatureInPartInRawPartListVM.FeatureInPartInRawPartColumns + col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) + Next + For Each col In Map.refPartInRawPartListVM.PartInRawPartColumns + col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) + Next + For Each col In Map.refStatisticsVM.OptimizerStatisticsColumns + col.ColumnVisibility = If(col.Visible, Visibility.Visible, Visibility.Collapsed) + Next + If Not IsNothing(Map.refFeatureListVM.colFeature_Do) Then + Map.refFeatureListVM.colFeature_Do.ColumnVisibility = Visibility.Collapsed + End If + Map.refProjectVM.SetOptimizePanel_Visibility(True) Return True End Function diff --git a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb index 249059f6..11ec689d 100644 --- a/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/MainWindow/MainWindowVM.vb @@ -117,36 +117,28 @@ Public Class MainWindowVM End If ' Aggiorno visualizzazione unità di misura 'Map.refStatusBarVM.SetMeasureUnit(If(EgtUiUnitsAreMM(), MeasureUnitOpt.MM, MeasureUnitOpt.INCH)) - ' Se istanza oltre la prima, chiedo cosa aprire - If Not m_MainWindowM.bFirstInstance Then - ' Map.refProjectManagerVM.Open() - ' ' altrimenti verifico se richiesto ultimo progetto - 'ElseIf GetMainPrivateProfileInt(S_GENERAL, K_AUTOLOADLASTPROJ, 0) = 1 Then - ' Dim sLastProjectPath As String = String.Empty - ' GetMainPrivateProfileString(S_GENERAL, K_LASTPROJ, String.Empty, sLastProjectPath) - ' If Not String.IsNullOrWhiteSpace(sLastProjectPath) AndAlso File.Exists(sLastProjectPath) Then - ' Map.refProjectManagerVM.OpenProject(sLastProjectPath) - ' Else - ' Map.refProjectManagerVM.NewCmd() - ' End If - ' ' altrimenti nuovo progetto - 'Else - ' Map.refProjectManagerVM.NewCmd() - End If - ' setto il primo file dalla lista degli MRU come progetto corrente da aprire - Dim sLastProjectPath As String = String.Empty - GetMainPrivateProfileString(S_MRUPROJFILES, K_FILE & "1", String.Empty, sLastProjectPath) - If Not String.IsNullOrWhiteSpace(sLastProjectPath) AndAlso File.Exists(sLastProjectPath) Then - ' ricavo l'Id e il progetto associato per l'apertura di quest'ultimo - Dim PjId As Integer = 0 - Dim sPjId As String = Path.GetFileNameWithoutExtension(sLastProjectPath) - Integer.TryParse(sPjId, PjId) - Map.refProjManagerVM.SetCurrProj(PjId) - End If ' imposto MainWindow per finestra di Loading LoadingWndHelper.SetMainWindow(Application.Current.MainWindow) + ' leggo riga di comando + Dim nCommandType As Integer = 0 + Dim nPage As Pages = Pages.VIEW + Dim nProdId As Integer = 0 + If ProcessCommandLine(nCommandType, nPage, nProdId) AndAlso nCommandType = 1 Then + Map.refProdManagerVM.SetCurrProd(nProdId) + Else + ' setto il primo file dalla lista degli MRU come progetto corrente da aprire + Dim sLastProjectPath As String = String.Empty + GetMainPrivateProfileString(S_MRUPROJFILES, K_FILE & "1", String.Empty, sLastProjectPath) + If Not String.IsNullOrWhiteSpace(sLastProjectPath) AndAlso File.Exists(sLastProjectPath) Then + ' ricavo l'Id e il progetto associato per l'apertura di quest'ultimo + Dim PjId As Integer = 0 + Dim sPjId As String = Path.GetFileNameWithoutExtension(sLastProjectPath) + Integer.TryParse(sPjId, PjId) + Map.refProjManagerVM.SetCurrProj(PjId) + End If + End If ' apro in modalita' VIEW - Map.refMainMenuVM.SelPage = Pages.VIEW + Map.refMainMenuVM.SelPage = nPage ' inizializzo thread di aggiornamento e comunicazione con DB ' creo thread gestione macchina @@ -159,6 +151,22 @@ Public Class MainWindowVM End Sub + Friend Function ProcessCommandLine(ByRef nCommandType As Integer, ByRef nPage As Pages, ByRef nProdId As Integer) As Boolean + ' Se non ci sono veri parametri su linea di comando, esco (il primo è sempre il nome del programma) + If Environment.GetCommandLineArgs.Count() <= 1 Then Return False + ' Recupero primo parametro che dovrebbe essere il tipo dimodalita' riga di comando + Dim sFile As String = Environment.GetCommandLineArgs(1) + If String.IsNullOrWhiteSpace(sFile) OrElse Not Integer.TryParse(sFile, nCommandType) OrElse nCommandType <= 0 Then Return False + Select Case nCommandType + Case 1 ' apri progetto in ottimizzatore + ' recupero secondo parametro + Dim sProdId As String = Environment.GetCommandLineArgs(2) + If Not Integer.TryParse(sProdId, nProdId) OrElse nProdId <= 0 Then Return False + nPage = Pages.MACHINING + Return True + End Select + End Function + Friend Sub KeyDown(PressedKey As Key) ' Con ESC esco dall'azione corrente If PressedKey = Key.Escape Then