Browse Source

Fix the platform activity check

Contributes to #128
Arjen Hiemstra 9 years ago
parent
commit
a84a5d784a
2 changed files with 12 additions and 24 deletions
  1. 12 22
      cura/CuraApplication.py
  2. 0 2
      resources/qml/Cura.qml

+ 12 - 22
cura/CuraApplication.py

@@ -77,6 +77,7 @@ class CuraApplication(QtApplication):
         self._platform_activity = False
 
         self.activeMachineChanged.connect(self._onActiveMachineChanged)
+        self.getController().getScene().sceneChanged.connect(self.updatePlatformActivity)
 
         Preferences.getInstance().addPreference("cura/active_machine", "")
         Preferences.getInstance().addPreference("cura/active_mode", "simple")
@@ -223,24 +224,15 @@ class CuraApplication(QtApplication):
     def getPlatformActivity(self):
         return self._platform_activity
 
-    @pyqtSlot(bool)
-    def setPlatformActivity(self, activity):
-        ##Sets the _platform_activity variable on true or false depending on whether there is a mesh on the platform
-        if activity == True:
-            self._platform_activity = activity
-        elif activity == False:
-            nodes = []
-            for node in DepthFirstIterator(self.getController().getScene().getRoot()):
-                if type(node) is not SceneNode or not node.getMeshData():
-                    continue
-                nodes.append(node)
-            i = 0
-            for node in nodes:
-                if not node.getMeshData():
-                    continue
-                i += 1
-            if i <= 1: ## i == 0 when the meshes are removed using the deleteAll function; i == 1 when the last remaining mesh is removed using the deleteObject function
-                self._platform_activity = activity
+    def updatePlatformActivity(self, node = None):
+        count = 0
+        for node in DepthFirstIterator(self.getController().getScene().getRoot()):
+            if type(node) is not SceneNode or not node.getMeshData():
+                continue
+
+            count += 1
+
+        self._platform_activity = True if count > 0 else False
         self.activityChanged.emit()
 
     ##  Remove an object from the scene
@@ -254,8 +246,7 @@ class CuraApplication(QtApplication):
         if object:
             op = RemoveSceneNodeOperation(object)
             op.push()
-            self.setPlatformActivity(False)
-    
+
     ##  Create a number of copies of existing object.
     @pyqtSlot("quint64", int)
     def multiplyObject(self, object_id, count):
@@ -302,8 +293,7 @@ class CuraApplication(QtApplication):
                 op.addOperation(RemoveSceneNodeOperation(node))
 
             op.push()
-        self.setPlatformActivity(False)
-    
+
     ## Reset all translation on nodes with mesh data. 
     @pyqtSlot()
     def resetAllTranslation(self):

+ 0 - 2
resources/qml/Cura.qml

@@ -43,7 +43,6 @@ UM.MainWindow {
                         }
                         onTriggered: {
                             UM.MeshFileHandler.readLocalFile(modelData);
-                            Printer.setPlatformActivity(true)
                         }
                     }
                     onObjectAdded: fileMenu.insertItem(index, object)
@@ -415,7 +414,6 @@ UM.MainWindow {
         onAccepted:
         {
             UM.MeshFileHandler.readLocalFile(fileUrl)
-            Printer.setPlatformActivity(true)
         }
     }