1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # Copyright (c) 2018 Ultimaker B.V.
- # Cura is released under the terms of the LGPLv3 or higher.
- from typing import Any
- from UM.Qt.ListModel import ListModel
- from PyQt6.QtCore import pyqtSlot, Qt
- class SidebarCustomMenuItemsModel(ListModel):
- name_role = Qt.ItemDataRole.UserRole + 1
- actions_role = Qt.ItemDataRole.UserRole + 2
- menu_item_role = Qt.ItemDataRole.UserRole + 3
- menu_item_icon_name_role = Qt.ItemDataRole.UserRole + 5
- def __init__(self, parent=None):
- super().__init__(parent)
- self.addRoleName(self.name_role, "name")
- self.addRoleName(self.actions_role, "actions")
- self.addRoleName(self.menu_item_role, "menu_item")
- self.addRoleName(self.menu_item_icon_name_role, "icon_name")
- self._updateExtensionList()
- def _updateExtensionList(self)-> None:
- from cura.CuraApplication import CuraApplication
- for menu_item in CuraApplication.getInstance().getSidebarCustomMenuItems():
- self.appendItem({
- "name": menu_item["name"],
- "icon_name": menu_item["icon_name"],
- "actions": menu_item["actions"],
- "menu_item": menu_item["menu_item"]
- })
- @pyqtSlot(str, "QVariantList", "QVariantMap")
- def callMenuItemMethod(self, menu_item_name: str, menu_item_actions: list, kwargs: Any) -> None:
- for item in self._items:
- if menu_item_name == item["name"]:
- for method in menu_item_actions:
- getattr(item["menu_item"], method)(kwargs)
- break
|