WIP: Fix models to check if global stack exists

This commit is contained in:
Lipu Fei 2018-02-21 11:14:07 +01:00
parent 0649f177b4
commit 628d031542

View file

@ -66,23 +66,28 @@ class GenericMaterialsModel(BaseMaterialsModel):
super().__init__(parent) super().__init__(parent)
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
machine_manager = CuraApplication.getInstance().getMachineManager() self._machine_manager = CuraApplication.getInstance().getMachineManager()
extruder_manager = CuraApplication.getInstance().getExtruderManager() self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
material_manager = CuraApplication.getInstance()._material_manager self._material_manager = CuraApplication.getInstance()._material_manager
machine_manager.globalContainerChanged.connect(self._update) self._machine_manager.globalContainerChanged.connect(self._update)
extruder_manager.activeExtruderChanged.connect(self._update) self._extruder_manager.activeExtruderChanged.connect(self._update)
material_manager.materialsUpdated.connect(self._update) self._material_manager.materialsUpdated.connect(self._update)
self._update() self._update()
def _update(self): def _update(self):
item_list = [] global_stack = self._machine_manager.activeMachine
if global_stack is None:
self.setItems([])
return
result_dict = getAvailableMaterials() result_dict = getAvailableMaterials()
if result_dict is None: if result_dict is None:
self.setItems([]) self.setItems([])
return return
item_list = []
for root_material_id, container_node in result_dict.items(): for root_material_id, container_node in result_dict.items():
metadata = container_node.metadata metadata = container_node.metadata
# Only add results for generic materials # Only add results for generic materials
@ -128,21 +133,26 @@ class BrandMaterialsModel(ListModel):
self.addRoleName(self.MaterialsRole, "materials") self.addRoleName(self.MaterialsRole, "materials")
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
machine_manager = CuraApplication.getInstance().getMachineManager() self._machine_manager = CuraApplication.getInstance().getMachineManager()
extruder_manager = CuraApplication.getInstance().getExtruderManager() extruder_manager = CuraApplication.getInstance().getExtruderManager()
material_manager = CuraApplication.getInstance()._material_manager material_manager = CuraApplication.getInstance()._material_manager
machine_manager.globalContainerChanged.connect(self._update) self._machine_manager.globalContainerChanged.connect(self._update)
extruder_manager.activeExtruderChanged.connect(self._update) extruder_manager.activeExtruderChanged.connect(self._update)
material_manager.materialsUpdated.connect(self._update) material_manager.materialsUpdated.connect(self._update)
def _update(self): def _update(self):
brand_item_list = [] global_stack = self._machine_manager.activeMachine
if global_stack is None:
self.setItems([])
return
result_dict = getAvailableMaterials() result_dict = getAvailableMaterials()
if result_dict is None: if result_dict is None:
self.setItems([]) self.setItems([])
return return
brand_item_list = []
brand_group_dict = {} brand_group_dict = {}
for root_material_id, container_node in result_dict.items(): for root_material_id, container_node in result_dict.items():
metadata = container_node.metadata metadata = container_node.metadata
@ -231,17 +241,22 @@ class MaterialsModel(ListModel):
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
self._container_registry = CuraApplication.getInstance().getContainerRegistry() self._container_registry = CuraApplication.getInstance().getContainerRegistry()
machine_manager = CuraApplication.getInstance().getMachineManager() self._machine_manager = CuraApplication.getInstance().getMachineManager()
extruder_manager = CuraApplication.getInstance().getExtruderManager() extruder_manager = CuraApplication.getInstance().getExtruderManager()
material_manager = CuraApplication.getInstance()._material_manager material_manager = CuraApplication.getInstance()._material_manager
machine_manager.globalContainerChanged.connect(self._update) self._machine_manager.globalContainerChanged.connect(self._update)
extruder_manager.activeExtruderChanged.connect(self._update) extruder_manager.activeExtruderChanged.connect(self._update)
material_manager.materialsUpdated.connect(self._update) material_manager.materialsUpdated.connect(self._update)
self._update() self._update()
def _update(self): def _update(self):
global_stack = self._machine_manager.activeMachine
if global_stack is None:
self.setItems([])
return
result_dict = getAvailableMaterials() result_dict = getAvailableMaterials()
if result_dict is None: if result_dict is None:
self.setItems([]) self.setItems([])