Browse Source

Added icon for custom Menu items

Aleksei S 6 years ago
parent
commit
c4fa50a8fc

+ 6 - 3
cura/Settings/SidebarCustomMenuItemsModel.py

@@ -5,12 +5,14 @@ class SidebarCustomMenuItemsModel(ListModel):
     NameRole = Qt.UserRole + 1
     ActionsRole = Qt.UserRole + 2
     MenuItemRole = Qt.UserRole + 3
+    MenuItemIconNameRole = Qt.UserRole + 5
 
     def __init__(self, parent=None):
         super().__init__(parent)
         self.addRoleName(self.NameRole, "name")
         self.addRoleName(self.ActionsRole, "actions")
         self.addRoleName(self.MenuItemRole, "menu_item")
+        self.addRoleName(self.MenuItemIconNameRole, "iconName")
         self._updateExtensionList()
 
     def _updateExtensionList(self)-> None:
@@ -19,14 +21,15 @@ class SidebarCustomMenuItemsModel(ListModel):
 
             self.appendItem({
                     "name": menu_item["name"],
+                    "iconName": menu_item["iconName"],
                     "actions": menu_item["actions"],
                     "menu_item": menu_item["menu_item"]
                 })
 
-    @pyqtSlot(str, "QVariantList")
-    def callMenuItemMethod(self, menu_item_name: str, menu_item_actions: list)-> None:
+    @pyqtSlot(str, "QVariantList", "QVariantMap")
+    def callMenuItemMethod(self, menu_item_name: str, menu_item_actions: list, kwargs)-> None:
         for item in self._items:
             if menu_item_name == item["name"]:
                 for method in menu_item_actions:
-                    getattr(item["menu_item"], method)()
+                    getattr(item["menu_item"], method)(kwargs)
                 break

+ 2 - 1
resources/qml/Settings/SettingView.qml

@@ -568,9 +568,10 @@ Item
                     MenuItem
                     {
                         text: model.name
+                        iconName: model.iconName
                         onTriggered:
                         {
-                            customMenuItems.model.callMenuItemMethod(name, model.actions)
+                            customMenuItems.model.callMenuItemMethod(name, model.actions, {"key": contextMenu.key})
                         }
                     }
                    onObjectAdded: contextMenu.insertItem(index, object)