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
This commit is contained in:
Joey de l'Arago 2022-11-04 16:44:04 +01:00
parent 1ebf5bb650
commit 088ea0a768
2 changed files with 47 additions and 48 deletions

View file

@ -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)

View file

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