Update extrudermodel when material is changed

So the swatch updates, and we can use the materialname for extruder selection later on

CURA-333
This commit is contained in:
fieldOfView 2016-06-16 17:54:31 +02:00
parent d0626f8c8a
commit f083d41353

View File

@ -46,12 +46,17 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
self._add_global = False
self._active_extruder_stack = None
#Listen to changes.
manager = cura.ExtruderManager.ExtruderManager.getInstance()
manager.extrudersChanged.connect(self._updateExtruders) #When the list of extruders changes in general.
UM.Application.globalContainerStackChanged.connect(self._updateExtruders) #When the current machine changes.
UM.Application.getInstance().globalContainerStackChanged.connect(self._updateExtruders) #When the current machine changes.
self._updateExtruders()
manager.activeExtruderChanged.connect(self._onActiveExtruderChanged)
self._onActiveExtruderChanged()
def setAddGlobal(self, add):
if add != self._add_global:
self._add_global = add
@ -63,6 +68,23 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
def addGlobal(self):
return self._add_global
def _onActiveExtruderChanged(self):
manager = cura.ExtruderManager.ExtruderManager.getInstance()
active_extruder_stack = manager.getActiveExtruderStack()
if self._active_extruder_stack != active_extruder_stack:
if self._active_extruder_stack:
self._active_extruder_stack.containersChanged.disconnect(self._onExtruderStackContainersChanged)
if active_extruder_stack:
# Update the model when the material container is changed
active_extruder_stack.containersChanged.connect(self._onExtruderStackContainersChanged)
self._active_extruder_stack = active_extruder_stack
def _onExtruderStackContainersChanged(self, container):
if container.getMetaDataEntry("type") == "material":
self._updateExtruders()
## Update the list of extruders.
#
# This should be called whenever the list of extruders changes.