diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py old mode 100644 new mode 100755 index f28d2e4896..bd38bd8045 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1094,18 +1094,6 @@ class CuraApplication(QtApplication): fileLoaded = pyqtSignal(str) - def _onFileLoaded(self, job): - nodes = job.getResult() - for node in nodes: - if node is not None: - self.fileLoaded.emit(job.getFileName()) - node.setSelectable(True) - node.setName(os.path.basename(job.getFileName())) - op = AddSceneNodeOperation(node, self.getController().getScene().getRoot()) - op.push() - - self.getController().getScene().sceneChanged.emit(node) #Force scene change. - def _onJobFinished(self, job): if type(job) is not ReadMeshJob or not job.getResult(): return @@ -1133,10 +1121,8 @@ class CuraApplication(QtApplication): else: Logger.log("w", "Could not find a mesh in reloaded node.") - def _openFile(self, file): - job = ReadMeshJob(os.path.abspath(file)) - job.finished.connect(self._onFileLoaded) - job.start() + def _openFile(self, filename): + self.readLocalFile(QUrl.fromLocalFile(filename)) def _addProfileReader(self, profile_reader): # TODO: Add the profile reader to the list of plug-ins that can be used when importing profiles. diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 3aa226c518..981145bebd 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -342,11 +342,6 @@ class CuraEngineBackend(QObject, Backend): # # \param source The scene node that was changed. def _onSceneChanged(self, source): - if self._tool_active: - # do it later - self._postponed_scene_change_sources.append(source) - return - if type(source) is not SceneNode: return @@ -354,25 +349,27 @@ class CuraEngineBackend(QObject, Backend): if source == self._scene.getRoot(): num_objects = 0 for node in DepthFirstIterator(self._scene.getRoot()): - # For now this seems to be a reliable method to check for nodes that impact slicing - # From: SliceInfo, _onWriteStarted - if type(node) is not SceneNode or not node.getMeshData(): - continue - num_objects += 1 + # Only count sliceable objects + if node.callDecoration("isSliceable"): + num_objects += 1 if num_objects != self._last_num_objects: self._last_num_objects = num_objects root_scene_nodes_changed = True else: return - self.determineAutoSlicing() - if not source.callDecoration("isGroup") and not root_scene_nodes_changed: if source.getMeshData() is None: return if source.getMeshData().getVertices() is None: return + if self._tool_active: + # do it later, each source only has to be done once + if source not in self._postponed_scene_change_sources: + self._postponed_scene_change_sources.append(source) + return + self.needsSlicing() self.stopSlicing() self._onChanged() @@ -517,6 +514,7 @@ class CuraEngineBackend(QObject, Backend): # \param tool The tool that the user was using. def _onToolOperationStopped(self, tool): self._tool_active = False # React on scene change again + self.determineAutoSlicing() # Switch timer on if appropriate # Process all the postponed scene changes while self._postponed_scene_change_sources: source = self._postponed_scene_change_sources.pop(0) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py old mode 100644 new mode 100755 index 05f7c0e6f5..50ca1dbd06 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -90,9 +90,8 @@ class SliceInfo(Extension): # Listing all files placed on the buildplate modelhashes = [] for node in DepthFirstIterator(CuraApplication.getInstance().getController().getScene().getRoot()): - if type(node) is not SceneNode or not node.getMeshData(): - continue - modelhashes.append(node.getMeshData().getHash()) + if node.callDecoration("isSliceable"): + modelhashes.append(node.getMeshData().getHash()) # Creating md5sums and formatting them as discussed on JIRA modelhash_formatted = ",".join(modelhashes) diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 8d74f1b67c..1a345deafa 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -262,6 +262,7 @@ Item id: reloadAllAction; text: catalog.i18nc("@action:inmenu menubar:file","Re&load All Models"); iconName: "document-revert"; + shortcut: "F5" onTriggered: Printer.reloadAll(); }