12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # Copyright (c) 2020 Ultimaker B.V.
- # Cura is released under the terms of the LGPLv3 or higher.
- from typing import Dict, List
- from PyQt5.QtCore import Qt
- from UM.Qt.ListModel import ListModel
- from cura.Settings.GlobalStack import GlobalStack
- create_new_list_item = {
- "id": "new",
- "name": "Create new",
- "displayName": "Create new",
- "type": "default_option" # to make sure we are not mixing the "Create new" option with a printer with id "new"
- } # type: Dict[str, str]
- class UpdatableMachinesModel(ListModel):
- """Model that holds cura packages.
- By setting the filter property the instances held by this model can be changed.
- """
- def __init__(self, parent = None) -> None:
- super().__init__(parent)
- self.addRoleName(Qt.UserRole + 1, "id")
- self.addRoleName(Qt.UserRole + 2, "name")
- self.addRoleName(Qt.UserRole + 3, "displayName")
- self.addRoleName(Qt.UserRole + 4, "type") # Either "default_option" or "machine"
- def update(self, machines: List[GlobalStack]) -> None:
- items = [create_new_list_item] # type: List[Dict[str, str]]
- for machine in sorted(machines, key = lambda printer: printer.name):
- items.append({
- "id": machine.id,
- "name": machine.name,
- "displayName": "Update " + machine.name,
- "type": "machine"
- })
- self.setItems(items)
|