diff --git a/Icarus/CurrMachiningPanel/CurrMachining.vb b/Icarus/CurrMachiningPanel/CurrMachining.vb index 318b86c..465d60a 100644 --- a/Icarus/CurrMachiningPanel/CurrMachining.vb +++ b/Icarus/CurrMachiningPanel/CurrMachining.vb @@ -274,7 +274,7 @@ Public Class CurrMachiningCathegory ' verifico dipendenze tra parametri Select Case m_Type Case Cathegories.LINK - For Each Param In {MachiningParam.Params.LINKTYPE, MachiningParam.Params.LEADIN} + For Each Param In {MachiningParam.Params.LINKTYPE, MachiningParam.Params.LEADIN, MachiningParam.Params.LEADOUT} Dim MachiningParam As ComboMachiningParam = MachiningParamList.FirstOrDefault(Function(z) z.Type = Param) MachiningParam.ManageDependencyParam() Next diff --git a/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb b/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb index 451b62d..069a3f2 100644 --- a/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb +++ b/Icarus/FilledSolidPanel/FilledSolidPanelVM.vb @@ -35,6 +35,10 @@ Public Class FilledSolidPanelVM Return m_SelFilledSolid End Get Set(value As FilledSolidEntity) + If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse Map.refFilledSolidPanelVM.bCPlaneObj_IsActive Then + NotifyPropertyChanged(NameOf(SelFilledSolid)) + Return + End If m_SelFilledSolid = value EgtDeselectAll() If Not IsNothing(value) Then @@ -349,6 +353,8 @@ Public Class FilledSolidPanelVM NotifyPropertyChanged(NameOf(bRotate_IsChecked)) Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.AUXSOLIDPARAM) NotifyPropertyChanged(NameOf(FilledSolidList_IsEnabled)) + ' disattivo lista filled solid + SetFilledSolidListIsEnabled(False) Else NotifyPropertyChanged(NameOf(m_bMachParam_IsChecked)) End If @@ -366,11 +372,17 @@ Public Class FilledSolidPanelVM End Get End Property + Private m_FilledSolidList_IsEnabled As Boolean = False Public ReadOnly Property FilledSolidList_IsEnabled As Boolean Get - Return Not m_bMachParam_IsChecked + Return If(m_FilledSolidList.Count > 0, m_FilledSolidList_IsEnabled, False) End Get End Property + Friend Sub SetFilledSolidListIsEnabled(bValue As Boolean) + m_FilledSolidList_IsEnabled = bValue + NotifyPropertyChanged(NameOf(FilledSolidList_IsEnabled)) + End Sub + ' riferimento griglia all'ingresso in questa pagina Private m_OriginalGridFrame As New Frame3d @@ -388,6 +400,8 @@ Public Class FilledSolidPanelVM End Get End Property + Private m_bEscOnLine2P As Boolean = False + #Region "Tooltip" Public ReadOnly Property Import_ToolTip As String @@ -571,6 +585,8 @@ Public Class FilledSolidPanelVM SelFilledSolid = m_FilledSolidList(0) NotifyPropertyChanged(NameOf(SelFilledSolid)) End If + ' attivo lista filled solid + SetFilledSolidListIsEnabled(True) Map.refSceneHostVM.MainScene.SetStatusNull() End Sub @@ -615,6 +631,8 @@ Public Class FilledSolidPanelVM EgtSelectObj(m_SelFilledSolid.nExtrusionId) End Select EgtDraw() + ' disattivo il resto dell'interfaccia + ManageInterface(False) Return True End Function @@ -624,6 +642,7 @@ Public Class FilledSolidPanelVM End Sub Friend Sub OnExecCmdEnd(command As Controller.CMD) + m_bEscOnLine2P = False Select Case command Case Controller.CMD.MODIFYCURVE, Controller.CMD.ADDPOINTCURVE, Controller.CMD.REMOVEPOINTCURVE ' leggo altezza estrusione @@ -663,6 +682,10 @@ Public Class FilledSolidPanelVM ' Imposto flag di ricalcolo slice EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True) End Select + ' se non ho creato percorso riabilito interfaccia + If Not m_bIsCreatingPath Then + ManageInterface(True) + End If If command <> Controller.CMD.LINE2P AndAlso command <> Controller.CMD.EXTRUDE Then Return ' se finita creazione estrusione If m_bIsCreatingExtrusion Then @@ -733,6 +756,9 @@ Public Class FilledSolidPanelVM If Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.EXTRUDE) Then m_bIsCreatingExtrusion = True Map.refControllerInputPanelVM.IsChecked = True + If Not EgtCurveIsClosed(nNewEntityId) Then + m_bEscOnLine2P = True + End If Else ' cancello layer EgtErase(nNewExtrusionLayerId) @@ -757,6 +783,13 @@ Public Class FilledSolidPanelVM ' rimetto la selezione scena a null Map.refSceneHostVM.MainScene.SetStatusNull() End If + ' se esc su creazione percorso, lo annullo, altrimenti riabilito interfaccia + If m_bEscOnLine2P Then + m_bEscOnLine2P = False + Else + If m_bIsCreatingExtrusion Then m_bIsCreatingExtrusion = False + ManageInterface(True) + End If End If End Sub @@ -792,6 +825,17 @@ Public Class FilledSolidPanelVM Return nFilledSolidIndex + 1 End Function + Friend Sub ManageInterface(bValue As Boolean) + ' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma + Map.refProjManagerVM.SetProjCmdIsEnabled(bValue) + Map.refTopPanelVM.SetTopPanelIsEnabled(bValue) + Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerIndexIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(bValue) + Map.refSliceManagerVM.SetButtonsIsEnabled(bValue) + SetFilledSolidListIsEnabled(bValue) + End Sub + #End Region ' METHODS #Region "COMMANDS" @@ -815,7 +859,9 @@ Public Class FilledSolidPanelVM ''' Public Sub Import(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) Map.refSceneHostVM.InsertFilledSolid() + ManageInterface(True) End Sub #End Region ' Import @@ -839,6 +885,7 @@ Public Class FilledSolidPanelVM ''' Public Sub Line2P(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) Dim nNewShellNumberLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWRIB) If nNewShellNumberLayerId = GDB_ID.NULL Then nNewShellNumberLayerId = EgtCreateGroup(m_nPartId) EgtSetName(nNewShellNumberLayerId, LAY_NEWRIB) @@ -887,6 +934,7 @@ Public Class FilledSolidPanelVM End If NotifyPropertyChanged(NameOf(SelFilledSolid)) End If + SetFilledSolidListIsEnabled(True) End Sub #End Region ' Delete @@ -1311,6 +1359,7 @@ Public Class FilledSolidPanelVM ''' Public Sub CPlaneObj(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) ' salvo selezione precedente e deseleziono altri oggetti m_PrevSelObjs.Clear() Dim nSelObjId As Integer = EgtGetFirstSelectedObj() diff --git a/Icarus/RibPanel/RibPanelVM.vb b/Icarus/RibPanel/RibPanelVM.vb index 11875a4..62a790b 100644 --- a/Icarus/RibPanel/RibPanelVM.vb +++ b/Icarus/RibPanel/RibPanelVM.vb @@ -42,6 +42,10 @@ Public Class RibPanelVM Return m_SelRib End Get Set(value As RibEntity) + If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse Map.refRibPanelVM.bCPlaneObj_IsActive Then + NotifyPropertyChanged(NameOf(SelRib)) + Return + End If m_SelRib = value EgtDeselectAll() If Not IsNothing(value) Then @@ -374,6 +378,8 @@ Public Class RibPanelVM NotifyPropertyChanged(NameOf(bRotate_IsChecked)) Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.RIBPARAM) NotifyPropertyChanged(NameOf(RibList_IsEnabled)) + ' disattivo lista ribs + SetRibListIsEnabled(False) Else NotifyPropertyChanged(NameOf(m_bMachParam_IsChecked)) End If @@ -391,11 +397,17 @@ Public Class RibPanelVM End Get End Property + Private m_RibList_IsEnabled As Boolean = False Public ReadOnly Property RibList_IsEnabled As Boolean Get - Return Not m_bMachParam_IsChecked + Return If(m_RibList.Count > 0, m_RibList_IsEnabled, False) End Get End Property + Friend Sub SetRibListIsEnabled(bValue As Boolean) + m_RibList_IsEnabled = bValue + NotifyPropertyChanged(NameOf(RibList_IsEnabled)) + End Sub + ' riferimento griglia all'ingresso in questa pagina Private m_OriginalGridFrame As New Frame3d @@ -413,6 +425,8 @@ Public Class RibPanelVM End Get End Property + Private m_bEscOnLine2P As Boolean = False + #Region "Tooltip" Public ReadOnly Property Import_ToolTip As String @@ -596,6 +610,8 @@ Public Class RibPanelVM SelRib = m_RibList(0) NotifyPropertyChanged(NameOf(SelRib)) End If + ' abilito lista ribs + SetRibListIsEnabled(True) Map.refSceneHostVM.MainScene.SetStatusNull() End Sub @@ -640,6 +656,8 @@ Public Class RibPanelVM EgtSelectObj(m_SelRib.nExtrusionId) End Select EgtDraw() + ' disattivo il resto dell'interfaccia + ManageInterface(False) Return True End Function @@ -649,6 +667,7 @@ Public Class RibPanelVM End Sub Friend Sub OnExecCmdEnd(command As Controller.CMD) + m_bEscOnLine2P = False Select Case command Case Controller.CMD.MODIFYCURVE, Controller.CMD.ADDPOINTCURVE, Controller.CMD.REMOVEPOINTCURVE ' leggo altezza estrusione @@ -688,6 +707,10 @@ Public Class RibPanelVM ' Imposto flag di ricalcolo slice EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True) End Select + ' se non ho creato percorso riabilito interfaccia + If Not m_bIsCreatingPath Then + ManageInterface(True) + End If If command <> Controller.CMD.LINE2P AndAlso command <> Controller.CMD.EXTRUDE Then Return ' se finita creazione estrusione If m_bIsCreatingExtrusion Then @@ -754,9 +777,10 @@ Public Class RibPanelVM EgtSelectObj(nNewEntityId) If Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.EXTRUDE) Then m_bIsCreatingExtrusion = True + If Not EgtCurveIsClosed(nNewEntityId) Then + m_bEscOnLine2P = True + End If Else - ' cancello layer - 'EgtErase(nNewRibLayerId) EgtErase(nNewExtrusionLayerId) End If End If @@ -779,6 +803,13 @@ Public Class RibPanelVM ' rimetto la selezione scena a null Map.refSceneHostVM.MainScene.SetStatusNull() End If + ' se esc su creazione percorso, lo annullo, altrimenti riabilito interfaccia + If m_bEscOnLine2P Then + m_bEscOnLine2P = False + Else + If m_bIsCreatingExtrusion Then m_bIsCreatingExtrusion = False + ManageInterface(True) + End If End If End Sub @@ -814,6 +845,17 @@ Public Class RibPanelVM Return nRibIndex + 1 End Function + Friend Sub ManageInterface(bValue As Boolean) + ' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma + Map.refProjManagerVM.SetProjCmdIsEnabled(bValue) + Map.refTopPanelVM.SetTopPanelIsEnabled(bValue) + Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerIndexIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(bValue) + Map.refSliceManagerVM.SetButtonsIsEnabled(bValue) + SetRibListIsEnabled(bValue) + End Sub + #End Region ' METHODS #Region "COMMANDS" @@ -837,7 +879,9 @@ Public Class RibPanelVM ''' Public Sub Import(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) Map.refSceneHostVM.InsertRib() + ManageInterface(True) End Sub #End Region ' Import @@ -861,6 +905,7 @@ Public Class RibPanelVM ''' Public Sub Line2P(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) Dim nNewRibLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWRIB) If nNewRibLayerId = GDB_ID.NULL Then nNewRibLayerId = EgtCreateGroup(m_nPartId) EgtSetName(nNewRibLayerId, LAY_NEWRIB) @@ -909,6 +954,7 @@ Public Class RibPanelVM End If NotifyPropertyChanged(NameOf(SelRib)) End If + SetRibListIsEnabled(True) End Sub #End Region ' Delete @@ -1332,6 +1378,7 @@ Public Class RibPanelVM ''' Public Sub CPlaneObj(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) ' salvo selezione precedente e deseleziono altri oggetti m_PrevSelObjs.Clear() Dim nSelObjId As Integer = EgtGetFirstSelectedObj() diff --git a/Icarus/RibParamPanel/RibParamPanelVM.vb b/Icarus/RibParamPanel/RibParamPanelVM.vb index 8df312d..19e59cb 100644 --- a/Icarus/RibParamPanel/RibParamPanelVM.vb +++ b/Icarus/RibParamPanel/RibParamPanelVM.vb @@ -135,6 +135,8 @@ Public Class RibParamPanelVM Map.refSliceManagerVM.UpdateDimensions() End If End If + ' riattivo lista ribs + Map.refRibPanelVM.SetRibListIsEnabled(False) ' ripristino modalita' standard Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.NULL) Map.refRibPanelVM.ResetMachParamIsChecked() diff --git a/Icarus/SceneHost/MySceneHostVM.vb b/Icarus/SceneHost/MySceneHostVM.vb index d5c5b89..6bc97fb 100644 --- a/Icarus/SceneHost/MySceneHostVM.vb +++ b/Icarus/SceneHost/MySceneHostVM.vb @@ -274,8 +274,6 @@ Public Class MySceneHostVM bOk = MainController.OpenProject(sFilePath, False) ' Imposto stato gestione mouse diretto della scena a nessuno MainScene.SetStatusNull() - ' imposto modalita' import - Map.refTopPanelVM.SelPage = Pages.NULL Return bOk End Function diff --git a/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb b/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb index 05a7904..c374ea7 100644 --- a/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb +++ b/Icarus/ShellNumberPanel/ShellNumberPanelVM.vb @@ -40,6 +40,10 @@ Public Class ShellNumberPanelVM Return m_SelShellNumber End Get Set(value As ShellNumberEntity) + If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse Map.refShellNumberPanelVM.bCPlaneObj_IsActive Then + NotifyPropertyChanged(NameOf(SelShellNumber)) + Return + End If m_SelShellNumber = value EgtDeselectAll() If Not IsNothing(value) Then @@ -354,6 +358,8 @@ Public Class ShellNumberPanelVM NotifyPropertyChanged(NameOf(bRotate_IsChecked)) Map.refRightPanelVM.SetSelPanel(RightPanelVM.Panels.SHELLNUMBERPARAM) NotifyPropertyChanged(NameOf(ShellNumberList_IsEnabled)) + ' disattivo lista shell number + SetShellNumberListIsEnabled(False) Else NotifyPropertyChanged(NameOf(m_bMachParam_IsChecked)) End If @@ -371,11 +377,17 @@ Public Class ShellNumberPanelVM End Get End Property + Private m_ShellNumberList_IsEnabled As Boolean = False Public ReadOnly Property ShellNumberList_IsEnabled As Boolean Get - Return Not m_bMachParam_IsChecked + Return If(m_ShellNumberList.Count > 0, m_ShellNumberList_IsEnabled, False) End Get End Property + Friend Sub SetShellNumberListIsEnabled(bValue As Boolean) + m_ShellNumberList_IsEnabled = bValue + NotifyPropertyChanged(NameOf(ShellNumberList_IsEnabled)) + End Sub + ' riferimento griglia all'ingresso in questa pagina Private m_OriginalGridFrame As New Frame3d @@ -393,6 +405,8 @@ Public Class ShellNumberPanelVM End Get End Property + Private m_bEscOnLine2P As Boolean = False + #Region "Tooltip" Public ReadOnly Property Import_ToolTip As String @@ -576,6 +590,8 @@ Public Class ShellNumberPanelVM SelShellNumber = m_ShellNumberList(0) NotifyPropertyChanged(NameOf(SelShellNumber)) End If + ' abilito lista shell number + SetShellNumberListIsEnabled(True) Map.refSceneHostVM.MainScene.SetStatusNull() End Sub @@ -620,6 +636,8 @@ Public Class ShellNumberPanelVM EgtSelectObj(m_SelShellNumber.nExtrusionId) End Select EgtDraw() + ' disattivo il resto dell'interfaccia + ManageInterface(False) Return True End Function @@ -629,6 +647,7 @@ Public Class ShellNumberPanelVM End Sub Friend Sub OnExecCmdEnd(command As Controller.CMD) + m_bEscOnLine2P = False Select Case command Case Controller.CMD.MODIFYCURVE, Controller.CMD.ADDPOINTCURVE, Controller.CMD.REMOVEPOINTCURVE ' leggo altezza estrusione @@ -668,6 +687,10 @@ Public Class ShellNumberPanelVM ' Imposto flag di ricalcolo slice EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True) End Select + ' se non ho creato percorso riabilito interfaccia + If Not m_bIsCreatingPath Then + ManageInterface(True) + End If If command <> Controller.CMD.LINE2P AndAlso command <> Controller.CMD.EXTRUDE Then Return ' se finita creazione estrusione If m_bIsCreatingExtrusion Then @@ -738,6 +761,9 @@ Public Class ShellNumberPanelVM If Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.EXTRUDE) Then m_bIsCreatingExtrusion = True Map.refControllerInputPanelVM.IsChecked = True + If Not EgtCurveIsClosed(nNewEntityId) Then + m_bEscOnLine2P = True + End If Else ' cancello layer EgtErase(nNewExtrusionLayerId) @@ -762,6 +788,13 @@ Public Class ShellNumberPanelVM ' rimetto la selezione scena a null Map.refSceneHostVM.MainScene.SetStatusNull() End If + ' se esc su creazione percorso, lo annullo, altrimenti riabilito interfaccia + If m_bEscOnLine2P Then + m_bEscOnLine2P = False + Else + If m_bIsCreatingExtrusion Then m_bIsCreatingExtrusion = False + ManageInterface(True) + End If End If End Sub @@ -797,6 +830,18 @@ Public Class ShellNumberPanelVM Return nShellNumberIndex + 1 End Function + Friend Sub ManageInterface(bValue As Boolean) + ' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma + Map.refProjManagerVM.SetProjCmdIsEnabled(bValue) + Map.refTopPanelVM.SetTopPanelIsEnabled(bValue) + Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerIndexIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(bValue) + Map.refSliceManagerVM.SetButtonsIsEnabled(bValue) + SetShellNumberListIsEnabled(bValue) + End Sub + + #End Region ' METHODS #Region "COMMANDS" @@ -820,7 +865,9 @@ Public Class ShellNumberPanelVM ''' Public Sub Import(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) Map.refSceneHostVM.InsertShellNumber() + ManageInterface(True) End Sub #End Region ' Import @@ -844,6 +891,7 @@ Public Class ShellNumberPanelVM ''' Public Sub Line2P(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) Dim nNewShellNumberLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWRIB) If nNewShellNumberLayerId = GDB_ID.NULL Then nNewShellNumberLayerId = EgtCreateGroup(m_nPartId) EgtSetName(nNewShellNumberLayerId, LAY_NEWRIB) @@ -892,6 +940,7 @@ Public Class ShellNumberPanelVM End If NotifyPropertyChanged(NameOf(SelShellNumber)) End If + SetShellNumberListIsEnabled(True) End Sub #End Region ' Delete @@ -1316,6 +1365,7 @@ Public Class ShellNumberPanelVM ''' Public Sub CPlaneObj(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) ' salvo selezione precedente e deseleziono altri oggetti m_PrevSelObjs.Clear() Dim nSelObjId As Integer = EgtGetFirstSelectedObj() diff --git a/Icarus/SliceManager/SliceManagerVM.vb b/Icarus/SliceManager/SliceManagerVM.vb index fa20883..5cacfe2 100644 --- a/Icarus/SliceManager/SliceManagerVM.vb +++ b/Icarus/SliceManager/SliceManagerVM.vb @@ -526,6 +526,8 @@ Public Class SliceManagerVM ''' Execute the CPlaneTop. This method is invoked by the CPlaneTopCommand. ''' Public Sub Slice() + If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse Map.refStartMachPanelVM.bCPlaneObj_IsActive OrElse Map.refRibPanelVM.bCPlaneObj_IsActive OrElse + Map.refShellNumberPanelVM.bCPlaneObj_IsActive OrElse Map.refFilledSolidPanelVM.bCPlaneObj_IsActive Then Return If m_bCalculating Then Return m_bCalculating = True If IsNothing(Map.refTopPanelVM.SelPart) Then diff --git a/Icarus/StartMachPanel/StartMachPanelV.xaml b/Icarus/StartMachPanel/StartMachPanelV.xaml index eec58a9..c4a4e31 100644 --- a/Icarus/StartMachPanel/StartMachPanelV.xaml +++ b/Icarus/StartMachPanel/StartMachPanelV.xaml @@ -28,6 +28,7 @@ ItemsSource="{Binding StartList}" SelectedItem="{Binding SelStart}" DisplayMemberPath="ghName" + IsEnabled="{Binding StartList_IsEnabled}" Style="{StaticResource LeftPanel_ComboBox}"/> 0 OrElse Map.refStartMachPanelVM.bCPlaneObj_IsActive Then + NotifyPropertyChanged(NameOf(SelStart)) + Return + End If m_SelStart = value EgtDeselectAll() If Not IsNothing(value) Then @@ -293,6 +297,18 @@ Public Class StartMachPanelVM End Get End Property + Private m_StartList_IsEnabled As Boolean = False + Public ReadOnly Property StartList_IsEnabled As Boolean + Get + Return If(m_StartList.Count > 0, m_StartList_IsEnabled, False) + End Get + End Property + Friend Sub SetStartListIsEnabled(bValue As Boolean) + m_StartList_IsEnabled = bValue + NotifyPropertyChanged(NameOf(StartList_IsEnabled)) + End Sub + + ' riferimento griglia all'ingresso in questa pagina Private m_OriginalGridFrame As New Frame3d @@ -304,6 +320,8 @@ Public Class StartMachPanelVM End Get End Property + Private m_bEscOnLine2P As Boolean = False + #Region "Tooltip" Public ReadOnly Property Point_ToolTip As String @@ -458,6 +476,8 @@ Public Class StartMachPanelVM SelStart = m_StartList(0) NotifyPropertyChanged(NameOf(SelStart)) End If + ' abilito lista start mach + SetStartListIsEnabled(True) Map.refSceneHostVM.MainScene.SetStatusNull() End Sub @@ -481,16 +501,33 @@ Public Class StartMachPanelVM ' seleziono percorso corrente EgtDeselectAll() EgtSelectObj(m_SelStart.nId) + EgtDraw() + ' disattivo il resto dell'interfaccia + ManageInterface(False) Return True End Function Friend Sub UpdateUI() ' se attiva operazione in piu' passaggi, esco If Map.refSceneHostVM.MainController.GetContinue() Then Return - Dim NewEntity As StartEntity = Nothing - ' se finita creazione curva (รจ stata chiusa) + End Sub + + Friend Sub OnExecCmdEnd(command As Controller.CMD) + m_bEscOnLine2P = False + Select Case command + Case Controller.CMD.LINE2P, Controller.CMD.DELETE, Controller.CMD.MODIFYCURVE, Controller.CMD.ADDPOINTCURVE, Controller.CMD.REMOVEPOINTCURVE, + Controller.CMD.MOVE, Controller.CMD.ROTATE + ' Imposto flag di ricalcolo slice + EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True) + ' rimetto la selezione scena a null + Map.refSceneHostVM.MainScene.SetStatusNull() + End Select + ' riabilito interfaccia + ManageInterface(True) + ' se finita creazione curva If bIsCreatingPath Then m_bIsCreatingPath = False + Dim NewEntity As StartEntity = Nothing Dim nNewStartLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWSTART) Dim nNewEntityId As Integer = EgtGetFirstInGroup(nNewStartLayerId) Dim NewGeomType As GDB_TY = EgtGetType(nNewEntityId) @@ -503,37 +540,22 @@ Public Class StartMachPanelVM NewEntityType = StartMachTypes.COMPO End Select EgtSetName(nNewEntityId, START_GEOM) - ' coloro l'entita' di rosso - Dim c3Red As Color3d - c3Red.FromColor(System.Drawing.Color.Red) - EgtSetColor(nNewEntityId, c3Red) + ' resetto colore entita' + EgtResetColor(nNewEntityId) ' lo sposto nel layer degli start EgtRelocateGlob(nNewEntityId, m_nStartMachLayerId, GDB_POS.LAST_SON) ' lo aggiungo alla lista NewEntity = New StartEntity(nNewEntityId, NewEntityType) m_StartList.Add(NewEntity) - ' cancello layer di disegno - EgtErase(nNewStartLayerId) + ' lo seleziono + SelStart = NewEntity + NotifyPropertyChanged(NameOf(SelStart)) End If + ' cancello layer di disegno + EgtErase(nNewStartLayerId) End If ' aggiorno posizione RefreshPos() - ' se aggiunta entita' - If Not IsNothing(NewEntity) Then - SelStart = NewEntity - NotifyPropertyChanged(NameOf(SelStart)) - End If - ' rimetto la selezione scena a null - Map.refSceneHostVM.MainScene.SetStatusNull() - End Sub - - Friend Sub OnExecCmdEnd(command As Controller.CMD) - Select Case command - Case Controller.CMD.LINE2P, Controller.CMD.DELETE, Controller.CMD.MODIFYCURVE, Controller.CMD.ADDPOINTCURVE, Controller.CMD.REMOVEPOINTCURVE, - Controller.CMD.MOVE, Controller.CMD.ROTATE - ' Imposto flag di ricalcolo slice - EgtSetInfo(Map.refTopPanelVM.SelPart.nPartId, MAC_TORECALC_SLICE, True) - End Select End Sub Friend Sub OnKeyDown(Key As Forms.Keys) @@ -550,6 +572,12 @@ Public Class StartMachPanelVM ' rimetto la selezione scena a null Map.refSceneHostVM.MainScene.SetStatusNull() End If + ' se esc su creazione percorso, lo annullo, altrimenti riabilito interfaccia + If m_bEscOnLine2P Then + m_bEscOnLine2P = False + Else + ManageInterface(True) + End If End If End Sub @@ -565,6 +593,17 @@ Public Class StartMachPanelVM End If End Sub + Friend Sub ManageInterface(bValue As Boolean) + ' disabilito ProjManager, TopPanel, TFS, Slider, bottoni e uscita dal programma + Map.refProjManagerVM.SetProjCmdIsEnabled(bValue) + Map.refTopPanelVM.SetTopPanelIsEnabled(bValue) + Map.refViewLayerManagerVM.SetViewLayerManagerIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerIndexIsEnabled(bValue) + Map.refSliderManagerVM.SetLayerAdvancementIsEnabled(bValue) + Map.refSliceManagerVM.SetButtonsIsEnabled(bValue) + SetStartListIsEnabled(bValue) + End Sub + #End Region ' METHODS #Region "COMMANDS" @@ -588,13 +627,13 @@ Public Class StartMachPanelVM ''' Public Sub Point(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Dim nNewStartLayerId As Integer = EgtGetFirstNameInGroup( m_nPartId, LAY_NEWSTART) + ManageInterface(False) + Dim nNewStartLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWSTART) If nNewStartLayerId = GDB_ID.NULL Then nNewStartLayerId = EgtCreateGroup(m_nPartId) EgtSetName(nNewStartLayerId, LAY_NEWSTART) End If EgtSetCurrPartLayer(m_nPartId, nNewStartLayerId) - 'InitCommand(True) If Map.refSceneHostVM.MainController.ExecuteCommand(Controller.CMD.POINT) Then m_bIsCreatingPath = True End If @@ -621,7 +660,8 @@ Public Class StartMachPanelVM ''' Public Sub Line2P(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return - Dim nNewStartLayerId As Integer = EgtGetFirstNameInGroup( m_nPartId, LAY_NEWSTART) + ManageInterface(False) + Dim nNewStartLayerId As Integer = EgtGetFirstNameInGroup(m_nPartId, LAY_NEWSTART) If nNewStartLayerId = GDB_ID.NULL Then nNewStartLayerId = EgtCreateGroup(m_nPartId) EgtSetName(nNewStartLayerId, LAY_NEWSTART) @@ -952,6 +992,7 @@ Public Class StartMachPanelVM ''' Public Sub CPlaneObj(ByVal param As Object) If Map.refSceneHostVM.MainController.GetStep <> 0 OrElse m_bCPlaneObj_IsActive Then Return + ManageInterface(False) ' salvo selezione precedente e deseleziono altri oggetti m_PrevSelObjs.Clear() Dim nSelObjId As Integer = EgtGetFirstSelectedObj() @@ -1012,6 +1053,7 @@ Public Class StartMachPanelVM End If NotifyPropertyChanged(NameOf(SelStart)) End If + SetStartListIsEnabled(True) End Sub #End Region ' Delete diff --git a/Icarus/TopPanel/TopPanelV.xaml b/Icarus/TopPanel/TopPanelV.xaml index 881c61d..a4e455a 100644 --- a/Icarus/TopPanel/TopPanelV.xaml +++ b/Icarus/TopPanel/TopPanelV.xaml @@ -58,7 +58,7 @@ diff --git a/Icarus/TopPanel/TopPanelVM.vb b/Icarus/TopPanel/TopPanelVM.vb index 4597540..1cc2315 100644 --- a/Icarus/TopPanel/TopPanelVM.vb +++ b/Icarus/TopPanel/TopPanelVM.vb @@ -121,6 +121,7 @@ Public Class TopPanelVM Map.refLeftPanelVM.SetSelPanel(LeftPanelVM.Panels.NULL) NotifyPropertyChanged(NameOf(SelModifyMode)) End If + NotifyPropertyChanged(NameOf(SelModifyModeName)) ' chiudo il popup SetModifyIsChecked(False) End Set @@ -128,8 +129,15 @@ Public Class TopPanelVM Friend Sub SetSelModifyMode(ModifyMode As ModifyModes) SelModifyMode = m_ModifyModeList.FirstOrDefault(Function(x) x.ModifyMode = ModifyMode) NotifyPropertyChanged(NameOf(SelModifyMode)) + NotifyPropertyChanged(NameOf(SelModifyModeName)) End Sub + Public ReadOnly Property SelModifyModeName As String + Get + Return If(Not IsNothing(m_SelModifyMode) AndAlso m_SelModifyMode.ModifyMode <> ModifyModes.NULL, m_SelModifyMode.sName, "Modify") + End Get + End Property + Private m_bModify_IsChecked As Boolean Public Property bModify_IsChecked As Boolean Get