mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-16 18:59:39 +08:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
# Copyright (c) 2020 Ultimaker B.V.
|
|
# Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
from typing import Dict, List
|
|
|
|
from PyQt6.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)
|