Skip to content

Feature Request: If StringParameter.set_menu() receives a dictionary where the items are QActions. The provided actions should be used as the generated menu actions. #1

@Nathan-Vandevoort

Description

@Nathan-Vandevoort
class MenuStringParameter(qt_parameters.StringParameter):

    def _build_menu(self, content: Collection, menu: QtWidgets.QMenu | None = None) -> QtWidgets.QMenu:
        if menu is None:
            menu = QtWidgets.QMenu(self)
        if isinstance(content, Sequence):
            content = {i: i for i in content}
        for label, data in content.items():
            if isinstance(data, Mapping):
                sub_menu = menu.addMenu(label)
                self._build_menu(data, sub_menu)
            # ---------------------------------------------------------------
            # Proposed change:
            elif isinstance(data, QtWidgets.QAction):
                menu.addAction(data)
            # ---------------------------------------------------------------
            else:
                action = QtGui.QAction(label, self)
                action.setData(data)
                action.triggered.connect(partial(self._action_triggered, action))
                menu.addAction(action)
        return menu

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions