Ejemplo n.º 1
0
    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))