diff --git a/gui/builtinContextMenus/damagePattern.py b/gui/builtinContextMenus/damagePattern.py index ca65cf9c9..a3b756615 100644 --- a/gui/builtinContextMenus/damagePattern.py +++ b/gui/builtinContextMenus/damagePattern.py @@ -20,7 +20,11 @@ class DamagePattern(ContextMenu): if not self.settings.get('damagePattern'): return False - return srcContext == "resistancesViewFull" and self.mainFrame.getActiveFit() is not None + return srcContext == "resistancesViewFull" + + @property + def enabled(self): + return self.mainFrame.getActiveFit() is not None def getText(self, itmContext, selection): sDP = import_DamagePattern.getInstance() diff --git a/gui/builtinContextMenus/factorReload.py b/gui/builtinContextMenus/factorReload.py index c70028efc..e1a0eed51 100644 --- a/gui/builtinContextMenus/factorReload.py +++ b/gui/builtinContextMenus/factorReload.py @@ -17,7 +17,11 @@ class FactorReload(ContextMenu): if not self.settings.get('factorReload'): return False - return srcContext == "firepowerViewFull" and self.mainFrame.getActiveFit() is not None + return srcContext == "firepowerViewFull" + + @property + def enabled(self): + return self.mainFrame.getActiveFit() is not None def getText(self, itmContext, selection): return "Factor in Reload Time" diff --git a/gui/contextMenu.py b/gui/contextMenu.py index ec9048429..e526c4e91 100644 --- a/gui/contextMenu.py +++ b/gui/contextMenu.py @@ -33,6 +33,16 @@ class ContextMenu(object): def register(cls): ContextMenu.menus.append(cls) + @classmethod + def hasMenu(cls, selection, *fullContexts): + for i, fullContext in enumerate(fullContexts): + srcContext = fullContext[0] + for menuHandler in cls.menus: + m = menuHandler() + if m.display(srcContext, selection): + return True + return False + @classmethod def getMenu(cls, selection, *fullContexts): """ @@ -117,6 +127,7 @@ class ContextMenu(object): if check is not None: rootItem.Check(check) + rootItem.Enable(m.enabled) empty = False @@ -186,6 +197,11 @@ class ContextMenu(object): '''If menu item is toggleable, this should return bool value''' return None + @property + def enabled(self): + '''If menu item is enabled. Allows an item to display, but not be selected''' + return True + # noinspection PyUnresolvedReferences from gui.builtinContextMenus import ( # noqa: E402,F401 openFit,