From 088ea0a768f6f211be376ca8b58f552a67aca057 Mon Sep 17 00:00:00 2001 From: Joey de l'Arago Date: Fri, 4 Nov 2022 16:44:04 +0100 Subject: [PATCH] Swap out UpdatableMachinesModel for MachineListModel. This has to be instantiated with the WorkspaceDialog but attaching the listeners throws an error because it is done too early. The listeners are not needed anyway, so they have been disabled. Update WorkspaceDialog.qml to use MachineListModel CURA-9424 --- plugins/3MFReader/WorkspaceDialog.py | 9 ++- plugins/3MFReader/WorkspaceDialog.qml | 86 +++++++++++++-------------- 2 files changed, 47 insertions(+), 48 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 0a8f7784b2..9e0c8158cd 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -5,6 +5,7 @@ from PyQt6.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication, QU from PyQt6.QtGui import QDesktopServices from typing import List, Optional, Dict, cast +from cura.Machines.Models.MachineListModel import MachineListModel from cura.Settings.GlobalStack import GlobalStack from UM.Application import Application from UM.FlameProfiler import pyqtSlot @@ -14,8 +15,6 @@ from UM.Message import Message from UM.PluginRegistry import PluginRegistry from UM.Settings.ContainerRegistry import ContainerRegistry -from .UpdatableMachinesModel import UpdatableMachinesModel - import os import threading import time @@ -63,7 +62,7 @@ class WorkspaceDialog(QObject): self._extruders = [] self._objects_on_plate = False self._is_printer_group = False - self._updatable_machines_model = UpdatableMachinesModel(self) + self._updatable_machines_model = MachineListModel(self, listenToChanges=False) self._missing_package_metadata: List[Dict[str, str]] = [] self._plugin_registry: PluginRegistry = CuraApplication.getInstance().getPluginRegistry() self._install_missing_package_dialog: Optional[QObject] = None @@ -161,8 +160,8 @@ class WorkspaceDialog(QObject): self.machineNameChanged.emit() @pyqtProperty(QObject, notify = updatableMachinesChanged) - def updatableMachinesModel(self) -> UpdatableMachinesModel: - return cast(UpdatableMachinesModel, self._updatable_machines_model) + def updatableMachinesModel(self) -> MachineListModel: + return cast(MachineListModel, self._updatable_machines_model) def setUpdatableMachines(self, updatable_machines: List[GlobalStack]) -> None: self._updatable_machines_model.update(updatable_machines) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 46eef227dc..64444004d5 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -107,50 +107,50 @@ UM.Dialog comboboxTitle: catalog.i18nc("@action:label", "Open With") comboboxTooltipText: catalog.i18nc("@info:tooltip", "How should the conflict in the machine be resolved?") comboboxVisible: workspaceDialog.visible && manager.updatableMachinesModel.count > 1 - combobox: Cura.ComboBox + combobox: Cura.MachineSelector { - id: machineResolveComboBox - model: manager.updatableMachinesModel - textRole: "displayName" - visible: workspaceDialog.visible && model.count > 1 - currentIndex: machineVisibleChanged() - - onCurrentIndexChanged: - { - if (model.getItem(currentIndex).id == "new" - && model.getItem(currentIndex).type == "default_option") - { - manager.setResolveStrategy("machine", "new") - } - else - { - manager.setResolveStrategy("machine", "override") - manager.setMachineToOverride(model.getItem(currentIndex).id) - } - } - - function machineVisibleChanged() - { - if (!visible) {return} - - currentIndex = 0 - // If the project printer exists in Cura, set it as the default dropdown menu option. - // No need to check object 0, which is the "Create new" option - for (var i = 1; i < model.count; i++) - { - if (model.getItem(i).name == manager.machineName) - { - currentIndex = i - break - } - } - // The project printer does not exist in Cura. If there is at least one printer of the same - // type, select the first one, else set the index to "Create new" - if (currentIndex == 0 && model.count > 1) - { - currentIndex = 1 - } - } + id: machineSelector + headerCornerSide: Cura.RoundedRectangle.Direction.All + width: UM.Theme.getSize("machine_selector_widget").width + height: parent.height + anchors.centerIn: parent + machineListModel: manager.updatableMachinesModel +// onCurrentIndexChanged: +// { +// if (model.getItem(currentIndex).id == "new" +// && model.getItem(currentIndex).type == "default_option") +// { +// manager.setResolveStrategy("machine", "new") +// } +// else +// { +// manager.setResolveStrategy("machine", "override") +// manager.setMachineToOverride(model.getItem(currentIndex).id) +// } +// } +// +// function machineVisibleChanged() +// { +// if (!visible) {return} +// +// currentIndex = 0 +// // If the project printer exists in Cura, set it as the default dropdown menu option. +// // No need to check object 0, which is the "Create new" option +// for (var i = 1; i < model.count; i++) +// { +// if (model.getItem(i).name == manager.machineName) +// { +// currentIndex = i +// break +// } +// } +// // The project printer does not exist in Cura. If there is at least one printer of the same +// // type, select the first one, else set the index to "Create new" +// if (currentIndex == 0 && model.count > 1) +// { +// currentIndex = 1 +// } +// } } }