Browse Source

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
Joey de l'Arago 2 years ago
parent
commit
088ea0a768
2 changed files with 47 additions and 48 deletions
  1. 4 5
      plugins/3MFReader/WorkspaceDialog.py
  2. 43 43
      plugins/3MFReader/WorkspaceDialog.qml

+ 4 - 5
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)

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