From 50d301e8ccdc9adc8269520e0a073683d79db230 Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Sat, 12 Nov 2022 13:22:54 +0100 Subject: [PATCH] - Evitato contextmenu vuoto - Migliorata gestione nuovo pezzo - Correzioni e migliorie --- Icarus/ManagePartPanel/ManagePartPanelV.xaml | 7 ++--- .../ManagePartPanel/ManagePartPanelV.xaml.vb | 21 +++++++++++++++ Icarus/ManagePartPanel/ManagePartUtility.vb | 27 +++++++++++++++---- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/Icarus/ManagePartPanel/ManagePartPanelV.xaml b/Icarus/ManagePartPanel/ManagePartPanelV.xaml index 215a4be..4f98579 100644 --- a/Icarus/ManagePartPanel/ManagePartPanelV.xaml +++ b/Icarus/ManagePartPanel/ManagePartPanelV.xaml @@ -82,9 +82,10 @@ diff --git a/Icarus/ManagePartPanel/ManagePartPanelV.xaml.vb b/Icarus/ManagePartPanel/ManagePartPanelV.xaml.vb index 82fdceb..c4f4723 100644 --- a/Icarus/ManagePartPanel/ManagePartPanelV.xaml.vb +++ b/Icarus/ManagePartPanel/ManagePartPanelV.xaml.vb @@ -1,3 +1,24 @@ Public Class ManagePartPanelV + Protected Sub Item_ContextMenuOpening(sender As Object, e As ContextMenuEventArgs) + Dim PartItem As ManagePart_Part + Dim LayerItem As ManagePart_Layer + Dim EntityItem As PartManager_GeomEntity + Select Case e.OriginalSource.DataContext.GetType() + Case GetType(ManagePart_Part) + PartItem = DirectCast(e.OriginalSource.DataContext, ManagePart_Part) + If PartItem.MenuList.Count = 0 Then + e.Handled = True + End If + Case GetType(ManagePart_Layer) + LayerItem = DirectCast(e.OriginalSource.DataContext, ManagePart_Layer) + e.Handled = True + Case GetType(PartManager_GeomEntity) + EntityItem = DirectCast(e.OriginalSource.DataContext, PartManager_GeomEntity) + If EntityItem.MenuList.Count = 0 Then + e.Handled = True + End If + End Select + End Sub + End Class diff --git a/Icarus/ManagePartPanel/ManagePartUtility.vb b/Icarus/ManagePartPanel/ManagePartUtility.vb index 0edc816..fa553e5 100644 --- a/Icarus/ManagePartPanel/ManagePartUtility.vb +++ b/Icarus/ManagePartPanel/ManagePartUtility.vb @@ -117,6 +117,7 @@ Public Class PartManager_GeomEntity m_MenuList.Clear() Select Case Map.refManagePartPanelVM.Type Case ManagePartPanelVM.ManagePartType.IMPORT + Dim bIsSurface As Boolean = False For Each ProjectPart In Map.refManagePartPanelVM.ManagerPartList ' verifico in quali layer puo' andare questo elemento Dim EntityType As GDB_TY = EgtGetType(nId) @@ -136,6 +137,7 @@ Public Class PartManager_GeomEntity m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart)) End If Case GDB_TY.SRF_MESH + bIsSurface = True If Not IsNothing(OrigLayer) Then ' verifico se volume chiuso If nPrintSolidCount = 0 AndAlso (Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.PRINT_SOLID) Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart)) @@ -143,20 +145,20 @@ Public Class PartManager_GeomEntity If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.AUX_SOLIDS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart)) If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.RIBS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart)) If Not ProjectPart Is OrigLayer.OrigPart OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.OTHERS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart)) - m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART)) Else If nPrintSolidCount = 0 Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart)) - m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART)) End If End Select Next + If bIsSurface Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.CHANGENAME)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.DELETE)) Case ManagePartPanelVM.ManagePartType.MODIFY + Dim bIsSurface As Boolean = False For Each ProjectPart In Map.refTopPanelVM.PartList ' verifico in quali layer puo' andare questo elemento Dim EntityType As GDB_TY = EgtGetType(nId) @@ -172,6 +174,7 @@ Public Class PartManager_GeomEntity m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart)) End If Case GDB_TY.SRF_MESH + bIsSurface = True If Not IsNothing(OrigLayer) Then ' verifico se volume chiuso If nPrintSolidCount = 0 AndAlso (ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.PRINT_SOLID) Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart)) @@ -179,17 +182,16 @@ Public Class PartManager_GeomEntity If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.AUX_SOLIDS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart)) If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.RIBS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart)) If ProjectPart.nPartId <> OrigLayer.OrigPart.PrintPart.nPartId OrElse OrigLayer.Type <> ManagePart_Layer.LayerType.OTHERS Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart)) - m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART)) Else If nPrintSolidCount = 0 Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.PRINT_SOLID, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.SHELL_NUMBER, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.AUX_SOLIDS, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.RIBS, ProjectPart)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.OTHERS, ProjectPart)) - m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART)) End If End Select Next + If bIsSurface Then m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.NEWPART)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.CHANGENAME)) m_MenuList.Add(New GeomEntity_MenuItem(Me, ManagePart_Layer.LayerType.DELETE)) End Select @@ -617,7 +619,20 @@ Public Class GeomEntity_MenuItem ElseIf m_Type = ManagePart_Layer.LayerType.NEWPART Then Select Case Map.refManagePartPanelVM.Type Case ManagePartPanelVM.ManagePartType.IMPORT - Map.refManagePartPanelVM.AddPart() + Dim NewPart As ManagePart_Part = New ManagePart_Part(Nothing) + Map.refManagePartPanelVM.ManagerPartList.Add(NewPart) + ' elimino entity dalla lista entita' importate + Map.refManagePartPanelVM.ImportedEntityList.Remove(m_OrigEntity) + If Not IsNothing(NewPart) Then + Dim NewLayer As ManagePart_Layer = NewPart.LayerList.FirstOrDefault(Function(x) x.Type = ManagePart_Layer.LayerType.PRINT_SOLID) + If Not IsNothing(NewLayer) Then + NewLayer.EntityList.Add(m_OrigEntity) + ' aggiorno riferimenti nell'entita' + m_OrigEntity.UpdateOrigLayer(NewLayer) + End If + End If + ' aggiorno i contextmenu di tutti gli entity + Map.refManagePartPanelVM.UpdateAllEntityContextMenu() Case ManagePartPanelVM.ManagePartType.MODIFY ' recupero path da vecchio pezzo Dim sFilePath As String = "" @@ -882,6 +897,8 @@ Public Class ManagerPart_MenuItem EgtDraw() If bSelFirstPart Then Map.refTopPanelVM.SelFirstPart() End Select + ' aggiorno riferimenti nel context menu item + Map.refManagePartPanelVM.UpdateAllEntityContextMenu() End Select End Sub