Don't cache singletons in constructor

It makes it harder to test these things.

Contributes to issue CURA-6600.
This commit is contained in:
Ghostkeeper 2019-08-09 15:53:08 +02:00
parent 709584cc5e
commit 80e27b62d3
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276

View file

@ -3,11 +3,11 @@
from PyQt5.QtCore import Qt, QTimer from PyQt5.QtCore import Qt, QTimer
from UM.Application import Application
from UM.Logger import Logger from UM.Logger import Logger
from UM.Qt.ListModel import ListModel from UM.Qt.ListModel import ListModel
from UM.Settings.SettingFunction import SettingFunction from UM.Settings.SettingFunction import SettingFunction
from cura.CuraApplication import CuraApplication
from cura.Machines.QualityManager import QualityGroup from cura.Machines.QualityManager import QualityGroup
@ -36,12 +36,12 @@ class QualityProfilesDropDownMenuModel(ListModel):
self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group")
self.addRoleName(self.IsExperimentalRole, "is_experimental") self.addRoleName(self.IsExperimentalRole, "is_experimental")
application = Application.getInstance() application = CuraApplication.getInstance()
self._machine_manager = application.getMachineManager() machine_manager = application.getMachineManager()
application.globalContainerStackChanged.connect(self._onChange) application.globalContainerStackChanged.connect(self._onChange)
self._machine_manager.activeQualityGroupChanged.connect(self._onChange) machine_manager.activeQualityGroupChanged.connect(self._onChange)
self._machine_manager.extruderChanged.connect(self._onChange) machine_manager.extruderChanged.connect(self._onChange)
self._layer_height_unit = "" # This is cached self._layer_height_unit = "" # This is cached
@ -58,14 +58,14 @@ class QualityProfilesDropDownMenuModel(ListModel):
def _update(self): def _update(self):
Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__))
global_stack = self._machine_manager.activeMachine global_stack = CuraApplication.getInstance().getGlobalContainerStack()
if global_stack is None: if global_stack is None:
self.setItems([]) self.setItems([])
Logger.log("d", "No active GlobalStack, set quality profile model as empty.") Logger.log("d", "No active GlobalStack, set quality profile model as empty.")
return return
# Check for material compatibility # Check for material compatibility
if not self._machine_manager.activeMaterialsCompatible(): if not CuraApplication.getInstance().getMachineManager().activeMaterialsCompatible():
Logger.log("d", "No active material compatibility, set quality profile model as empty.") Logger.log("d", "No active material compatibility, set quality profile model as empty.")
self.setItems([]) self.setItems([])
return return
@ -94,7 +94,7 @@ class QualityProfilesDropDownMenuModel(ListModel):
self.setItems(item_list) self.setItems(item_list)
def _fetchLayerHeight(self, quality_group: "QualityGroup") -> float: def _fetchLayerHeight(self, quality_group: "QualityGroup") -> float:
global_stack = self._machine_manager.activeMachine global_stack = CuraApplication.getInstance().getMachineManager().activeMachine
if not self._layer_height_unit: if not self._layer_height_unit:
unit = global_stack.definition.getProperty("layer_height", "unit") unit = global_stack.definition.getProperty("layer_height", "unit")
if not unit: if not unit: