mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Fix show/hide button in WorkSpaceDialog printer selector
CURA-9424
This commit is contained in:
parent
27267deb22
commit
0c79ec738e
2 changed files with 16 additions and 17 deletions
|
@ -29,11 +29,11 @@ class MachineListModel(ListModel):
|
||||||
IsAbstractMachineRole = Qt.ItemDataRole.UserRole + 7
|
IsAbstractMachineRole = Qt.ItemDataRole.UserRole + 7
|
||||||
ComponentTypeRole = Qt.ItemDataRole.UserRole + 8
|
ComponentTypeRole = Qt.ItemDataRole.UserRole + 8
|
||||||
|
|
||||||
def __init__(self, parent: Optional[QObject] = None, machines: List[GlobalStack] = None, listenToChanges: bool = True) -> None:
|
def __init__(self, parent: Optional[QObject] = None, machines_filter: Optional[List[GlobalStack]] = None) -> None:
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
|
||||||
self._show_cloud_printers = False
|
self._show_cloud_printers = False
|
||||||
self._machines = machines
|
self._machines_filter = machines_filter
|
||||||
|
|
||||||
self._catalog = i18nCatalog("cura")
|
self._catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@ class MachineListModel(ListModel):
|
||||||
self._change_timer.setSingleShot(True)
|
self._change_timer.setSingleShot(True)
|
||||||
self._change_timer.timeout.connect(self._update)
|
self._change_timer.timeout.connect(self._update)
|
||||||
|
|
||||||
if listenToChanges:
|
|
||||||
CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged)
|
CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged)
|
||||||
CuraContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged)
|
CuraContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged)
|
||||||
CuraContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged)
|
CuraContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged)
|
||||||
|
@ -80,19 +79,13 @@ class MachineListModel(ListModel):
|
||||||
self._change_timer.start()
|
self._change_timer.start()
|
||||||
|
|
||||||
def _getMachineStacks(self) -> List[ContainerStack]:
|
def _getMachineStacks(self) -> List[ContainerStack]:
|
||||||
if self._machines is not None:
|
|
||||||
return self._machines
|
|
||||||
return CuraContainerRegistry.getInstance().findContainerStacks(type="machine")
|
return CuraContainerRegistry.getInstance().findContainerStacks(type="machine")
|
||||||
|
|
||||||
def _getAbstractMachineStacks(self) -> List[ContainerStack]:
|
def _getAbstractMachineStacks(self) -> List[ContainerStack]:
|
||||||
if self._machines is not None:
|
|
||||||
return list(filter(lambda machine: parseBool(machine.getMetaDataEntry("is_abstract_machine", False)), self._machines))
|
|
||||||
return CuraContainerRegistry.getInstance().findContainerStacks(is_abstract_machine = "True")
|
return CuraContainerRegistry.getInstance().findContainerStacks(is_abstract_machine = "True")
|
||||||
|
|
||||||
def update(self, machines: List[ContainerStack] = None) -> None:
|
def set_machines_filter(self, machines_filter: Optional[List[GlobalStack]]) -> None:
|
||||||
if machines is not None:
|
self._machines_filter = machines_filter
|
||||||
self._machines = machines
|
|
||||||
|
|
||||||
self._update()
|
self._update()
|
||||||
|
|
||||||
def _update(self) -> None:
|
def _update(self) -> None:
|
||||||
|
@ -106,6 +99,12 @@ class MachineListModel(ListModel):
|
||||||
|
|
||||||
abstract_machine_stacks = self._getAbstractMachineStacks()
|
abstract_machine_stacks = self._getAbstractMachineStacks()
|
||||||
abstract_machine_stacks.sort(key = lambda machine: machine.getName().upper(), reverse = True)
|
abstract_machine_stacks.sort(key = lambda machine: machine.getName().upper(), reverse = True)
|
||||||
|
|
||||||
|
if self._machines_filter is not None:
|
||||||
|
filter_ids = [machine_filter.id for machine_filter in self._machines_filter]
|
||||||
|
other_machine_stacks = [machine for machine in other_machine_stacks if machine.id in filter_ids]
|
||||||
|
abstract_machine_stacks = [machine for machine in abstract_machine_stacks if machine.id in filter_ids]
|
||||||
|
|
||||||
for abstract_machine in abstract_machine_stacks:
|
for abstract_machine in abstract_machine_stacks:
|
||||||
definition_id = abstract_machine.definition.getId()
|
definition_id = abstract_machine.definition.getId()
|
||||||
online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True)
|
online_machine_stacks = machines_manager.getMachinesWithDefinition(definition_id, online_only = True)
|
||||||
|
|
|
@ -62,7 +62,7 @@ class WorkspaceDialog(QObject):
|
||||||
self._extruders = []
|
self._extruders = []
|
||||||
self._objects_on_plate = False
|
self._objects_on_plate = False
|
||||||
self._is_printer_group = False
|
self._is_printer_group = False
|
||||||
self._updatable_machines_model = MachineListModel(self, listenToChanges=False)
|
self._updatable_machines_model = MachineListModel(self)
|
||||||
self._missing_package_metadata: List[Dict[str, str]] = []
|
self._missing_package_metadata: List[Dict[str, str]] = []
|
||||||
self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry()
|
self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry()
|
||||||
self._install_missing_package_dialog: Optional[QObject] = None
|
self._install_missing_package_dialog: Optional[QObject] = None
|
||||||
|
@ -164,7 +164,7 @@ class WorkspaceDialog(QObject):
|
||||||
return cast(MachineListModel, self._updatable_machines_model)
|
return cast(MachineListModel, self._updatable_machines_model)
|
||||||
|
|
||||||
def setUpdatableMachines(self, updatable_machines: List[GlobalStack]) -> None:
|
def setUpdatableMachines(self, updatable_machines: List[GlobalStack]) -> None:
|
||||||
self._updatable_machines_model.update(updatable_machines)
|
self._updatable_machines_model.set_machines_filter(updatable_machines)
|
||||||
self.updatableMachinesChanged.emit()
|
self.updatableMachinesChanged.emit()
|
||||||
|
|
||||||
@pyqtProperty(str, notify=qualityTypeChanged)
|
@pyqtProperty(str, notify=qualityTypeChanged)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue