From 73f3cd9f953e8836b3b97f7fdbdaf685192e673f Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 15 Oct 2024 11:23:34 +0200 Subject: [PATCH] BIM: Only dusplay context menu items when in BIM WB - fixes #17043 --- src/Mod/BIM/ArchAxis.py | 2 ++ src/Mod/BIM/ArchAxisSystem.py | 2 ++ src/Mod/BIM/ArchBuilding.py | 2 ++ src/Mod/BIM/ArchBuildingPart.py | 3 ++- src/Mod/BIM/ArchComponent.py | 2 ++ src/Mod/BIM/ArchFloor.py | 2 ++ src/Mod/BIM/ArchGrid.py | 2 ++ src/Mod/BIM/ArchIFCView.py | 2 ++ src/Mod/BIM/ArchMaterial.py | 6 ++++++ src/Mod/BIM/ArchReference.py | 3 +++ src/Mod/BIM/ArchSchedule.py | 4 ++++ src/Mod/BIM/ArchSectionPlane.py | 3 +++ src/Mod/BIM/ArchSite.py | 4 ++++ src/Mod/BIM/ArchWall.py | 4 ++++ src/Mod/BIM/ArchWindow.py | 4 ++++ src/Mod/BIM/nativeifc/ifc_viewproviders.py | 9 +++++++++ 16 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/Mod/BIM/ArchAxis.py b/src/Mod/BIM/ArchAxis.py index 289d915fb0..e5918bfa8a 100644 --- a/src/Mod/BIM/ArchAxis.py +++ b/src/Mod/BIM/ArchAxis.py @@ -578,6 +578,8 @@ class _ViewProviderAxis: return True def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchAxisSystem.py b/src/Mod/BIM/ArchAxisSystem.py index 3ea935fa66..df12fbb93d 100644 --- a/src/Mod/BIM/ArchAxisSystem.py +++ b/src/Mod/BIM/ArchAxisSystem.py @@ -200,6 +200,8 @@ class _ViewProviderAxisSystem: self.edit() def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchBuilding.py b/src/Mod/BIM/ArchBuilding.py index 8231f81a34..64bba1ebb2 100644 --- a/src/Mod/BIM/ArchBuilding.py +++ b/src/Mod/BIM/ArchBuilding.py @@ -305,6 +305,8 @@ class _ViewProviderBuilding(ArchFloor._ViewProviderFloor): def setupContextMenu(self,vobj,menu): from PySide import QtCore,QtGui import Arch_rc + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return action1 = QtGui.QAction(QtGui.QIcon(":/icons/Arch_BuildingPart.svg"),"Convert to BuildingPart",menu) QtCore.QObject.connect(action1,QtCore.SIGNAL("triggered()"),self.convertToBuildingPart) menu.addAction(action1) diff --git a/src/Mod/BIM/ArchBuildingPart.py b/src/Mod/BIM/ArchBuildingPart.py index 0b128b9685..5b08217687 100644 --- a/src/Mod/BIM/ArchBuildingPart.py +++ b/src/Mod/BIM/ArchBuildingPart.py @@ -803,7 +803,8 @@ class ViewProviderBuildingPart: def setupContextMenu(self, vobj, menu): from PySide import QtCore, QtGui import Draft_rc - + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return if (not hasattr(vobj,"DoubleClickActivates")) or vobj.DoubleClickActivates: if FreeCADGui.ActiveDocument.ActiveView.getActiveObject("Arch") == self.Object: menuTxt = translate("Arch", "Deactivate") diff --git a/src/Mod/BIM/ArchComponent.py b/src/Mod/BIM/ArchComponent.py index 9354cd58f5..f4dd0da945 100644 --- a/src/Mod/BIM/ArchComponent.py +++ b/src/Mod/BIM/ArchComponent.py @@ -1498,6 +1498,8 @@ class ViewProviderComponent: The context menu already assembled prior to this method being called. """ + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return self.contextMenuAddEdit(menu) self.contextMenuAddToggleSubcomponents(menu) diff --git a/src/Mod/BIM/ArchFloor.py b/src/Mod/BIM/ArchFloor.py index 57284f6d6c..70d2c9a673 100644 --- a/src/Mod/BIM/ArchFloor.py +++ b/src/Mod/BIM/ArchFloor.py @@ -399,6 +399,8 @@ class _ViewProviderFloor: from PySide import QtCore,QtGui import Arch_rc + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return action1 = QtGui.QAction(QtGui.QIcon(":/icons/Arch_BuildingPart.svg"),"Convert to BuildingPart",menu) QtCore.QObject.connect(action1,QtCore.SIGNAL("triggered()"),self.convertToBuildingPart) menu.addAction(action1) diff --git a/src/Mod/BIM/ArchGrid.py b/src/Mod/BIM/ArchGrid.py index c8e18ca0de..dd14d12c5f 100644 --- a/src/Mod/BIM/ArchGrid.py +++ b/src/Mod/BIM/ArchGrid.py @@ -282,6 +282,8 @@ class ViewProviderArchGrid: return True def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchIFCView.py b/src/Mod/BIM/ArchIFCView.py index b873f4423b..47325a2cd5 100644 --- a/src/Mod/BIM/ArchIFCView.py +++ b/src/Mod/BIM/ArchIFCView.py @@ -53,6 +53,8 @@ class IfcContextView: return True def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchMaterial.py b/src/Mod/BIM/ArchMaterial.py index 0c1a126234..30b0be4c36 100644 --- a/src/Mod/BIM/ArchMaterial.py +++ b/src/Mod/BIM/ArchMaterial.py @@ -84,6 +84,8 @@ class _ViewProviderArchMaterialContainer: self.Object = vobj.Object def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionMergeByName = QtGui.QAction(QtGui.QIcon(":/icons/Arch_Material_Group.svg"), translate("Arch", "Merge duplicates"), menu) @@ -360,6 +362,8 @@ class _ViewProviderArchMaterial: return True def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) actionEdit.triggered.connect(self.edit) @@ -660,6 +664,8 @@ class _ViewProviderArchMultiMaterial: self.edit() def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) actionEdit.triggered.connect(self.edit) diff --git a/src/Mod/BIM/ArchReference.py b/src/Mod/BIM/ArchReference.py index ef51cc933a..f09b8fd101 100644 --- a/src/Mod/BIM/ArchReference.py +++ b/src/Mod/BIM/ArchReference.py @@ -649,6 +649,9 @@ class ViewProviderArchReference: def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchSchedule.py b/src/Mod/BIM/ArchSchedule.py index eed79ea454..720dcb0441 100644 --- a/src/Mod/BIM/ArchSchedule.py +++ b/src/Mod/BIM/ArchSchedule.py @@ -429,6 +429,10 @@ class _ViewProviderArchSchedule: self.edit() def setupContextMenu(self, vobj, menu): + + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchSectionPlane.py b/src/Mod/BIM/ArchSectionPlane.py index bdb149cb60..d30f0dab4a 100644 --- a/src/Mod/BIM/ArchSectionPlane.py +++ b/src/Mod/BIM/ArchSectionPlane.py @@ -1135,6 +1135,9 @@ class _ViewProviderSectionPlane: self.edit() def setupContextMenu(self, vobj, menu): + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchSite.py b/src/Mod/BIM/ArchSite.py index 64eb439db6..4c51e09458 100644 --- a/src/Mod/BIM/ArchSite.py +++ b/src/Mod/BIM/ArchSite.py @@ -855,6 +855,10 @@ class _ViewProviderSite: return True def setupContextMenu(self, vobj, menu): + + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + actionEdit = QtGui.QAction(translate("Arch", "Edit"), menu) QtCore.QObject.connect(actionEdit, diff --git a/src/Mod/BIM/ArchWall.py b/src/Mod/BIM/ArchWall.py index c9b6499414..c0d617cc29 100644 --- a/src/Mod/BIM/ArchWall.py +++ b/src/Mod/BIM/ArchWall.py @@ -1327,6 +1327,10 @@ class _ViewProviderWall(ArchComponent.ViewProviderComponent): return ArchComponent.ViewProviderComponent.setDisplayMode(self,mode) def setupContextMenu(self, vobj, menu): + + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + super().contextMenuAddEdit(menu) actionFlipDirection = QtGui.QAction(QtGui.QIcon(":/icons/Arch_Wall_Tree.svg"), diff --git a/src/Mod/BIM/ArchWindow.py b/src/Mod/BIM/ArchWindow.py index 75d1cc83ea..4485baea23 100644 --- a/src/Mod/BIM/ArchWindow.py +++ b/src/Mod/BIM/ArchWindow.py @@ -817,6 +817,10 @@ class _ViewProviderWindow(ArchComponent.ViewProviderComponent): return True def setupContextMenu(self, vobj, menu): + + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + hingeIdxs = self.getHingeEdgeIndices() super().contextMenuAddEdit(menu) diff --git a/src/Mod/BIM/nativeifc/ifc_viewproviders.py b/src/Mod/BIM/nativeifc/ifc_viewproviders.py index 697323700f..2284c0bb1f 100644 --- a/src/Mod/BIM/nativeifc/ifc_viewproviders.py +++ b/src/Mod/BIM/nativeifc/ifc_viewproviders.py @@ -97,6 +97,9 @@ class ifc_vp_object: from nativeifc import ifc_materials from PySide import QtCore, QtGui # lazy import + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + icon = QtGui.QIcon(":/icons/IFC.svg") element = ifc_tools.get_ifc_element(vobj.Object) ifc_menu = None @@ -404,6 +407,9 @@ class ifc_vp_document(ifc_vp_object): from PySide import QtCore, QtGui # lazy import + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + ifc_menu = super().setupContextMenu(vobj, menu) if not ifc_menu: ifc_menu = menu @@ -584,6 +590,9 @@ class ifc_vp_material: from nativeifc import ifc_psets from PySide import QtCore, QtGui # lazy import + if FreeCADGui.activeWorkbench().name() != 'BIMWorkbench': + return + icon = QtGui.QIcon(":/icons/IFC.svg") if ifc_psets.has_psets(self.Object): action_props = QtGui.QAction(icon, "Expand property sets", menu)