Browse Source

Merge branch 'CURA-6015_fix_osx_crash' of github.com:Ultimaker/Cura into 4.0

Jaime van Kessel 6 years ago
parent
commit
b70a4ae0a2

+ 15 - 0
cura/CuraApplication.py

@@ -205,6 +205,8 @@ class CuraApplication(QtApplication):
         self._container_manager = None
 
         self._object_manager = None
+        self._extruders_model = None
+        self._extruders_model_with_optional = None
         self._build_plate_model = None
         self._multi_build_plate_model = None
         self._setting_visibility_presets_model = None
@@ -862,6 +864,19 @@ class CuraApplication(QtApplication):
             self._object_manager = ObjectsModel.createObjectsModel()
         return self._object_manager
 
+    @pyqtSlot(result = QObject)
+    def getExtrudersModel(self, *args) -> "ExtrudersModel":
+        if self._extruders_model is None:
+            self._extruders_model = ExtrudersModel(self)
+        return self._extruders_model
+
+    @pyqtSlot(result = QObject)
+    def getExtrudersModelWithOptional(self, *args) -> "ExtrudersModel":
+        if self._extruders_model_with_optional is None:
+            self._extruders_model_with_optional = ExtrudersModel(self)
+            self._extruders_model_with_optional.setAddOptionalExtruder(True)
+        return self._extruders_model_with_optional
+
     @pyqtSlot(result = QObject)
     def getMultiBuildPlateModel(self, *args) -> MultiBuildPlateModel:
         if self._multi_build_plate_model is None:

+ 0 - 2
cura/Machines/Models/NozzleModel.py

@@ -33,8 +33,6 @@ class NozzleModel(ListModel):
     def _update(self):
         Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__))
 
-        self.items.clear()
-
         global_stack = self._machine_manager.activeMachine
         if global_stack is None:
             self.setItems([])

+ 7 - 19
cura/Settings/ExtrudersModel.py

@@ -1,7 +1,7 @@
 # Copyright (c) 2018 Ultimaker B.V.
 # Cura is released under the terms of the LGPLv3 or higher.
 
-from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot, pyqtProperty, QTimer
+from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, QTimer
 from typing import Iterable
 
 from UM.i18n import i18nCatalog
@@ -78,8 +78,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
         self._update_extruder_timer.setSingleShot(True)
         self._update_extruder_timer.timeout.connect(self.__updateExtruders)
 
-        self._simple_names = False
-
         self._active_machine_extruders = []  # type: Iterable[ExtruderStack]
         self._add_optional_extruder = False
 
@@ -101,21 +99,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
     def addOptionalExtruder(self):
         return self._add_optional_extruder
 
-    ##  Set the simpleNames property.
-    def setSimpleNames(self, simple_names):
-        if simple_names != self._simple_names:
-            self._simple_names = simple_names
-            self.simpleNamesChanged.emit()
-            self._updateExtruders()
-
-    ##  Emitted when the simpleNames property changes.
-    simpleNamesChanged = pyqtSignal()
-
-    ##  Whether or not the model should show all definitions regardless of visibility.
-    @pyqtProperty(bool, fset = setSimpleNames, notify = simpleNamesChanged)
-    def simpleNames(self):
-        return self._simple_names
-
     ##  Links to the stack-changed signal of the new extruders when an extruder
     #   is swapped out or added in the current machine.
     #
@@ -221,7 +204,12 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel):
                     "enabled": True,
                     "color": "#ffffff",
                     "index": -1,
-                    "definition": ""
+                    "definition": "",
+                    "material": "",
+                    "variant": "",
+                    "stack": None,
+                    "material_brand": "",
+                    "color_name": "",
                 }
                 items.append(item)
             if self._items != items:

+ 6 - 4
cura/Settings/MachineManager.py

@@ -88,12 +88,14 @@ class MachineManager(QObject):
 
         self._onGlobalContainerChanged()
 
-        ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
+        extruder_manager = self._application.getExtruderManager()
+
+        extruder_manager.activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
         self._onActiveExtruderStackChanged()
 
-        ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeMaterialChanged)
-        ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeVariantChanged)
-        ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeQualityChanged)
+        extruder_manager.activeExtruderChanged.connect(self.activeMaterialChanged)
+        extruder_manager.activeExtruderChanged.connect(self.activeVariantChanged)
+        extruder_manager.activeExtruderChanged.connect(self.activeQualityChanged)
 
         self.globalContainerChanged.connect(self.activeStackChanged)
         self.globalValueChanged.connect(self.activeStackValueChanged)

+ 1 - 1
plugins/MachineSettingsAction/MachineSettingsAction.qml

@@ -13,7 +13,7 @@ import Cura 1.0 as Cura
 Cura.MachineAction
 {
     id: base
-    property var extrudersModel: Cura.ExtrudersModel{}
+    property var extrudersModel: CuraApplication.getExtrudersModel()
     property int extruderTabsCount: 0
 
     property var activeMachineId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.id : ""

+ 1 - 1
plugins/SimulationView/SimulationViewMenuComponent.qml

@@ -163,7 +163,7 @@ Cura.ExpandableComponent
 
         Repeater
         {
-            model: Cura.ExtrudersModel{}
+            model: CuraApplication.getExtrudersModel()
 
             CheckBox
             {

+ 4 - 2
plugins/SolidView/SolidView.py

@@ -12,7 +12,6 @@ from UM.Math.Color import Color
 from UM.View.GL.OpenGL import OpenGL
 
 from cura.Settings.ExtruderManager import ExtruderManager
-from cura.Settings.ExtrudersModel import ExtrudersModel
 
 import math
 
@@ -29,13 +28,16 @@ class SolidView(View):
         self._non_printing_shader = None
         self._support_mesh_shader = None
 
-        self._extruders_model = ExtrudersModel()
+        self._extruders_model = None
         self._theme = None
 
     def beginRendering(self):
         scene = self.getController().getScene()
         renderer = self.getRenderer()
 
+        if not self._extruders_model:
+            self._extruders_model = Application.getInstance().getExtrudersModel()
+
         if not self._theme:
             self._theme = Application.getInstance().getTheme()
 

+ 1 - 3
plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml

@@ -83,9 +83,7 @@ Item {
 
             Column {
                 Repeater {
-                    model: Cura.ExtrudersModel {
-                        simpleNames: true;
-                    }
+                    model: CuraApplication.getExtrudersModel()
 
                     Label {
                         text: model.name;

+ 1 - 4
resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml

@@ -17,10 +17,7 @@ Cura.ExpandablePopup
 {
     id: base
 
-    Cura.ExtrudersModel
-    {
-        id: extrudersModel
-    }
+    property var extrudersModel: CuraApplication.getExtrudersModel()
 
     UM.I18nCatalog
     {

+ 1 - 1
resources/qml/Menus/ContextMenu.qml

@@ -27,7 +27,7 @@ Menu
     MenuItem { id: extruderHeader; text: catalog.i18ncp("@label", "Print Selected Model With:", "Print Selected Models With:", UM.Selection.selectionCount); enabled: false; visible: base.shouldShowExtruders }
     Instantiator
     {
-        model: Cura.ExtrudersModel { id: extrudersModel }
+        model: CuraApplication.getExtrudersModel()
         MenuItem {
             text: "%1: %2 - %3".arg(model.name).arg(model.material).arg(model.variant)
             visible: base.shouldShowExtruders

Some files were not shown because too many files changed in this diff