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 +// } +// } } }