def create_menu(self, menu, item): enforce_requirements = Qt.QAction('Enforce requirements', menu, checkable=True) enforce_requirements.setChecked(self.ui_state.enforce_requirements) enforce_requirements.triggered.connect( self.toggle_enforce_requirements) menu.addAction(enforce_requirements) hide_unused_figures = Qt.QAction('Hide unused figures', menu, checkable=True) hide_unused_figures.setChecked(self.ui_state.hide_unused_figures) hide_unused_figures.triggered.connect(self.toggle_hide_unused_figures) menu.addAction(hide_unused_figures) menu.addSeparator() if item is None: return if hasattr(item, 'path'): menu.addAction('Browse to file', lambda: util.browse_to_file(item.path)) if isinstance(item, ModifierListItem): modifier_url = item.modifier.asset_url # Create a submenu showing which modifiers this modifier requires. requirements_menu = Qt.QMenu() requirements_menu.setTitle('Requirements') menu.addMenu(requirements_menu) modifiers_required = item.available_modifiers_required() modifiers_required_by = item.available_modifiers_required_by() if not modifiers_required: requirements_menu.setEnabled(False) for modifier_data in modifiers_required: requirements_menu.addAction( modifier_data.label, partial(self.select_modifier, modifier_data)) # Create a submenu showing which modifiers require this one. required_by_menu = Qt.QMenu() required_by_menu.setTitle('Required by') menu.addMenu(required_by_menu) if not modifiers_required_by: required_by_menu.setEnabled(False) for modifier_data in modifiers_required_by: required_by_menu.addAction( modifier_data.label, partial(self.select_modifier, modifier_data))