mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-29 23:34:32 +08:00
Merge branch 'CURA-6388_restore_missing_metadata' of github.com:Ultimaker/Cura
This commit is contained in:
commit
ced14c7daf
@ -59,6 +59,9 @@ class MachineInfo:
|
|||||||
self.container_id = None
|
self.container_id = None
|
||||||
self.name = None
|
self.name = None
|
||||||
self.definition_id = None
|
self.definition_id = None
|
||||||
|
|
||||||
|
self.metadata_dict = {} # type: Dict[str, str]
|
||||||
|
|
||||||
self.quality_type = None
|
self.quality_type = None
|
||||||
self.custom_quality_name = None
|
self.custom_quality_name = None
|
||||||
self.quality_changes_info = None
|
self.quality_changes_info = None
|
||||||
@ -342,6 +345,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
global_stack_id = self._stripFileToId(global_stack_file)
|
global_stack_id = self._stripFileToId(global_stack_file)
|
||||||
serialized = archive.open(global_stack_file).read().decode("utf-8")
|
serialized = archive.open(global_stack_file).read().decode("utf-8")
|
||||||
machine_name = self._getMachineNameFromSerializedStack(serialized)
|
machine_name = self._getMachineNameFromSerializedStack(serialized)
|
||||||
|
self._machine_info.metadata_dict = self._getMetaDataDictFromSerializedStack(serialized)
|
||||||
|
|
||||||
stacks = self._container_registry.findContainerStacks(name = machine_name, type = "machine")
|
stacks = self._container_registry.findContainerStacks(name = machine_name, type = "machine")
|
||||||
self._is_same_machine_type = True
|
self._is_same_machine_type = True
|
||||||
existing_global_stack = None
|
existing_global_stack = None
|
||||||
@ -832,7 +837,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
|
|
||||||
self._machine_info.quality_changes_info.name = quality_changes_name
|
self._machine_info.quality_changes_info.name = quality_changes_name
|
||||||
|
|
||||||
def _clearStack(self, stack):
|
@staticmethod
|
||||||
|
def _clearStack(stack):
|
||||||
application = CuraApplication.getInstance()
|
application = CuraApplication.getInstance()
|
||||||
|
|
||||||
stack.definitionChanges.clear()
|
stack.definitionChanges.clear()
|
||||||
@ -981,6 +987,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
extruder_stack.setMetaDataEntry("enabled", "True")
|
extruder_stack.setMetaDataEntry("enabled", "True")
|
||||||
extruder_stack.setMetaDataEntry("enabled", str(extruder_info.enabled))
|
extruder_stack.setMetaDataEntry("enabled", str(extruder_info.enabled))
|
||||||
|
|
||||||
|
# Set metadata fields that are missing from the global stack
|
||||||
|
for key, value in self._machine_info.metadata_dict.items():
|
||||||
|
if key not in global_stack.getMetaData():
|
||||||
|
global_stack.setMetaDataEntry(key, value)
|
||||||
|
|
||||||
def _updateActiveMachine(self, global_stack):
|
def _updateActiveMachine(self, global_stack):
|
||||||
# Actually change the active machine.
|
# Actually change the active machine.
|
||||||
machine_manager = Application.getInstance().getMachineManager()
|
machine_manager = Application.getInstance().getMachineManager()
|
||||||
@ -993,6 +1004,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
|
|
||||||
machine_manager.setActiveMachine(global_stack.getId())
|
machine_manager.setActiveMachine(global_stack.getId())
|
||||||
|
|
||||||
|
# Set metadata fields that are missing from the global stack
|
||||||
|
for key, value in self._machine_info.metadata_dict.items():
|
||||||
|
if key not in global_stack.getMetaData():
|
||||||
|
global_stack.setMetaDataEntry(key, value)
|
||||||
|
|
||||||
if self._quality_changes_to_apply:
|
if self._quality_changes_to_apply:
|
||||||
quality_changes_group_dict = quality_manager.getQualityChangesGroups(global_stack)
|
quality_changes_group_dict = quality_manager.getQualityChangesGroups(global_stack)
|
||||||
if self._quality_changes_to_apply not in quality_changes_group_dict:
|
if self._quality_changes_to_apply not in quality_changes_group_dict:
|
||||||
@ -1019,7 +1035,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
# Notify everything/one that is to notify about changes.
|
# Notify everything/one that is to notify about changes.
|
||||||
global_stack.containersChanged.emit(global_stack.getTop())
|
global_stack.containersChanged.emit(global_stack.getTop())
|
||||||
|
|
||||||
def _stripFileToId(self, file):
|
@staticmethod
|
||||||
|
def _stripFileToId(file):
|
||||||
mime_type = MimeTypeDatabase.getMimeTypeForFile(file)
|
mime_type = MimeTypeDatabase.getMimeTypeForFile(file)
|
||||||
file = mime_type.stripExtension(file)
|
file = mime_type.stripExtension(file)
|
||||||
return file.replace("Cura/", "")
|
return file.replace("Cura/", "")
|
||||||
@ -1028,7 +1045,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
return self._container_registry.getContainerForMimeType(MimeTypeDatabase.getMimeType("application/x-ultimaker-material-profile"))
|
return self._container_registry.getContainerForMimeType(MimeTypeDatabase.getMimeType("application/x-ultimaker-material-profile"))
|
||||||
|
|
||||||
## Get the list of ID's of all containers in a container stack by partially parsing it's serialized data.
|
## Get the list of ID's of all containers in a container stack by partially parsing it's serialized data.
|
||||||
def _getContainerIdListFromSerialized(self, serialized):
|
@staticmethod
|
||||||
|
def _getContainerIdListFromSerialized(serialized):
|
||||||
parser = ConfigParser(interpolation = None, empty_lines_in_values = False)
|
parser = ConfigParser(interpolation = None, empty_lines_in_values = False)
|
||||||
parser.read_string(serialized)
|
parser.read_string(serialized)
|
||||||
|
|
||||||
@ -1049,12 +1067,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
|
|
||||||
return container_ids
|
return container_ids
|
||||||
|
|
||||||
def _getMachineNameFromSerializedStack(self, serialized):
|
@staticmethod
|
||||||
|
def _getMachineNameFromSerializedStack(serialized):
|
||||||
parser = ConfigParser(interpolation = None, empty_lines_in_values = False)
|
parser = ConfigParser(interpolation = None, empty_lines_in_values = False)
|
||||||
parser.read_string(serialized)
|
parser.read_string(serialized)
|
||||||
return parser["general"].get("name", "")
|
return parser["general"].get("name", "")
|
||||||
|
|
||||||
def _getMaterialLabelFromSerialized(self, serialized):
|
@staticmethod
|
||||||
|
def _getMetaDataDictFromSerializedStack(serialized: str) -> Dict[str, str]:
|
||||||
|
parser = ConfigParser(interpolation = None, empty_lines_in_values = False)
|
||||||
|
parser.read_string(serialized)
|
||||||
|
return dict(parser["metadata"])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _getMaterialLabelFromSerialized(serialized):
|
||||||
data = ET.fromstring(serialized)
|
data = ET.fromstring(serialized)
|
||||||
metadata = data.iterfind("./um:metadata/um:name/um:label", {"um": "http://www.ultimaker.com/material"})
|
metadata = data.iterfind("./um:metadata/um:name/um:label", {"um": "http://www.ultimaker.com/material"})
|
||||||
for entry in metadata:
|
for entry in metadata:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user