From b3f1f6b4dbf412bb60944af710531b68663b64c2 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 2 Dec 2016 13:01:01 +0100 Subject: [PATCH] Project load dialog now also gives information about the quality & quality changes CURA-1263 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 16 +++++++++-- plugins/3MFReader/WorkspaceDialog.py | 30 +++++++++++++++++++++ plugins/3MFReader/WorkspaceDialog.qml | 20 ++++++++++++-- 3 files changed, 62 insertions(+), 4 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index f920cbe8fb..4a2fd9aca4 100644 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -87,6 +87,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Check if any quality_changes instance container is in conflict. instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)] + quality_name = "" + quality_type = "" + num_settings_overriden_by_quality_changes = 0 # How many settings are changed by the quality changes for instance_container_file in instance_container_files: container_id = self._stripFileToId(instance_container_file) instance_container = InstanceContainer(container_id) @@ -95,15 +98,21 @@ class ThreeMFWorkspaceReader(WorkspaceReader): instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) container_type = instance_container.getMetaDataEntry("type") if container_type == "quality_changes": + quality_name = instance_container.getName() + num_settings_overriden_by_quality_changes += len(instance_container._instances) # Check if quality changes already exists. quality_changes = self._container_registry.findInstanceContainers(id = container_id) if quality_changes: # Check if there really is a conflict by comparing the values if quality_changes[0] != instance_container: quality_changes_conflict = True - break + elif container_type == "quality": + # If the quality name is not set (either by quality or changes, set it now) + # Quality changes should always override this (as they are "on top") + if quality_name == "": + quality_name = instance_container.getName() + quality_type = instance_container.getName() Job.yieldThread() - num_visible_settings = 0 try: temp_preferences = Preferences() @@ -125,6 +134,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setQualityChangesConflict(quality_changes_conflict) self._dialog.setMaterialConflict(material_conflict) self._dialog.setNumVisibleSettings(num_visible_settings) + self._dialog.setQualityName(quality_name) + self._dialog.setQualityType(quality_type) + self._dialog.setNumSettingsOverridenByQualityChanges(num_settings_overriden_by_quality_changes) self._dialog.setActiveMode(active_mode) self._dialog.show() diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 9fc6459af4..09c6ff1f4f 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -32,12 +32,42 @@ class WorkspaceDialog(QObject): self._has_material_conflict = False self._num_visible_settings = 0 self._active_mode = "" + self._quality_name = "" + self._num_settings_overriden_by_quality_changes = 0 + self._quality_type = "" machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() materialConflictChanged = pyqtSignal() numVisibleSettingsChanged = pyqtSignal() activeModeChanged = pyqtSignal() + qualityNameChanged = pyqtSignal() + numSettingsOverridenByQualityChangesChanged = pyqtSignal() + qualityTypeChanged = pyqtSignal() + + @pyqtProperty(str, notify=qualityTypeChanged) + def qualityType(self): + return self._quality_type + + def setQualityType(self, quality_type): + self._quality_type = quality_type + self.qualityTypeChanged.emit() + + @pyqtProperty(int, notify=numSettingsOverridenByQualityChangesChanged) + def numSettingsOverridenByQualityChanges(self): + return self._num_settings_overriden_by_quality_changes + + def setNumSettingsOverridenByQualityChanges(self, num_settings_overriden_by_quality_changes): + self._num_settings_overriden_by_quality_changes = num_settings_overriden_by_quality_changes + self.numSettingsOverridenByQualityChangesChanged.emit() + + @pyqtProperty(str, notify=qualityNameChanged) + def qualityName(self): + return self._quality_name + + def setQualityName(self, quality_name): + self._quality_name = quality_name + self.qualityNameChanged.emit() @pyqtProperty(str, notify=activeModeChanged) def activeMode(self): diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index fbec1180c6..4e7a510058 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -130,12 +130,12 @@ UM.Dialog height: childrenRect.height Label { - text: catalog.i18nc("@action:label", "Type") + text: catalog.i18nc("@action:label", "Name") width: parent.width / 3 } Label { - text: catalog.i18nc("@action:label", "TOCHANGE") + text: manager.qualityName width: parent.width / 3 } @@ -159,6 +159,22 @@ UM.Dialog } } } + Row + { + width: parent.width + height: childrenRect.height + Label + { + text: catalog.i18nc("@action:label", "Derivative from") + width: parent.width / 3 + } + Label + { + text: catalog.i18nc("@action:label", "%1, %2 overrides" ).arg(manager.qualityType).arg(manager.numSettingsOverridenByQualityChanges) + width: parent.width / 3 + } + visible: manager.numSettingsOverridenByQualityChanges != 0 + } Label {