mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-05 20:16:09 +08:00
Fix typing in ThreeMFWorkspaceReader
CURA-7644
This commit is contained in:
parent
41a1ef12d7
commit
7f941f7f6b
@ -5,11 +5,12 @@ from configparser import ConfigParser
|
|||||||
import zipfile
|
import zipfile
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
from typing import cast, Dict, List, Optional, Tuple, Any, Set
|
from typing import cast, Dict, List, Optional, Tuple, Any, Set, Union
|
||||||
|
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
from UM.FileHandler.FileReader import FileReader
|
from UM.FileHandler.FileReader import FileReader
|
||||||
|
from UM.Util import parseBool
|
||||||
from UM.Workspace.WorkspaceReader import WorkspaceReader
|
from UM.Workspace.WorkspaceReader import WorkspaceReader
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
|
|
||||||
@ -55,12 +56,12 @@ _ignored_machine_network_metadata = {
|
|||||||
|
|
||||||
|
|
||||||
class ContainerInfo:
|
class ContainerInfo:
|
||||||
def __init__(self, file_name: Optional[str], serialized: Optional[str], parser: Optional[ConfigParser]) -> None:
|
def __init__(self, file_name: Optional[str] = None, serialized: Optional[str] = None, parser: Optional[ConfigParser] = None) -> None:
|
||||||
self.file_name = file_name
|
self.file_name = file_name # type: Optional[str]
|
||||||
self.serialized = serialized
|
self.serialized = serialized # type: Optional[str]
|
||||||
self.parser = parser
|
self.parser = parser # type: Optional[ConfigParser]
|
||||||
self.container = None
|
self.container = None # type: Optional[InstanceContainer]
|
||||||
self.definition_id = None
|
self.definition_id = None # type: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
class QualityChangesInfo:
|
class QualityChangesInfo:
|
||||||
@ -72,34 +73,33 @@ class QualityChangesInfo:
|
|||||||
|
|
||||||
class MachineInfo:
|
class MachineInfo:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.container_id = None
|
self.container_id = None # type: Optional[str]
|
||||||
self.name = None
|
self.name = None # type: Optional[str]
|
||||||
self.definition_id = None
|
self.definition_id = None # type: Optional[str]
|
||||||
|
|
||||||
self.metadata_dict = {} # type: Dict[str, str]
|
self.metadata_dict = {} # type: Dict[str, str]
|
||||||
|
|
||||||
self.quality_type = None
|
self.quality_type = None # type: Optional[str]
|
||||||
self.intent_category = None
|
self.intent_category = None # type: Optional[str]
|
||||||
self.custom_quality_name = None
|
self.custom_quality_name = None # type: Optional[str]
|
||||||
self.quality_changes_info = QualityChangesInfo()
|
self.quality_changes_info = None # type: Optional[QualityChangesInfo]
|
||||||
self.variant_info = None
|
self.variant_info = None # type: Optional[ContainerInfo]
|
||||||
|
self.definition_changes_info = None # type: Optional[ContainerInfo]
|
||||||
|
self.user_changes_info = None # type: Optional[ContainerInfo]
|
||||||
|
|
||||||
self.definition_changes_info = None
|
self.extruder_info_dict = {} # type: Dict[str, ExtruderInfo]
|
||||||
self.user_changes_info = None
|
|
||||||
|
|
||||||
self.extruder_info_dict = {} # type: Dict[str, ExtruderInfo]
|
|
||||||
|
|
||||||
|
|
||||||
class ExtruderInfo:
|
class ExtruderInfo:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.position = None
|
self.position = None # type: Optional[str]
|
||||||
self.enabled = True
|
self.enabled = True # type: bool
|
||||||
self.variant_info = None
|
self.variant_info = None # type: Optional[ContainerInfo]
|
||||||
self.root_material_id = None
|
self.root_material_id = None # type: Optional[str]
|
||||||
|
|
||||||
self.definition_changes_info = None
|
self.definition_changes_info = None # type: Optional[ContainerInfo]
|
||||||
self.user_changes_info = None
|
self.user_changes_info = None # type: Optional[ContainerInfo]
|
||||||
self.intent_info = None
|
self.intent_info = None # type: Optional[ContainerInfo]
|
||||||
|
|
||||||
|
|
||||||
class ThreeMFWorkspaceReader(WorkspaceReader):
|
class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
@ -330,7 +330,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
self._machine_info.quality_changes_info = QualityChangesInfo()
|
self._machine_info.quality_changes_info = QualityChangesInfo()
|
||||||
|
|
||||||
quality_changes_info_list = []
|
quality_changes_info_list = []
|
||||||
instance_container_info_dict = {} # id -> parser
|
instance_container_info_dict = {} # type: Dict[str, ContainerInfo] # id -> parser
|
||||||
for instance_container_file_name in instance_container_files:
|
for instance_container_file_name in instance_container_files:
|
||||||
container_id = self._stripFileToId(instance_container_file_name)
|
container_id = self._stripFileToId(instance_container_file_name)
|
||||||
|
|
||||||
@ -352,16 +352,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
if container_type == "quality_changes":
|
if container_type == "quality_changes":
|
||||||
quality_changes_info_list.append(container_info)
|
quality_changes_info_list.append(container_info)
|
||||||
|
|
||||||
if not parser.has_option("metadata", "position"):
|
if self._machine_info.quality_changes_info:
|
||||||
self._machine_info.quality_changes_info.name = parser["general"]["name"]
|
if not parser.has_option("metadata", "position"):
|
||||||
self._machine_info.quality_changes_info.global_info = container_info
|
self._machine_info.quality_changes_info.name = parser["general"]["name"]
|
||||||
else:
|
self._machine_info.quality_changes_info.global_info = container_info
|
||||||
position = parser["metadata"]["position"]
|
else:
|
||||||
self._machine_info.quality_changes_info.extruder_info_dict[position] = container_info
|
position = parser["metadata"]["position"]
|
||||||
|
self._machine_info.quality_changes_info.extruder_info_dict[position] = container_info
|
||||||
|
|
||||||
custom_quality_name = parser["general"]["name"]
|
custom_quality_name = parser["general"]["name"]
|
||||||
values = parser["values"] if parser.has_section("values") else dict()
|
if parser.has_section("values"):
|
||||||
num_settings_overridden_by_quality_changes += len(values)
|
num_settings_overridden_by_quality_changes += len(parser["values"])
|
||||||
|
|
||||||
# Check if quality changes already exists.
|
# Check if quality changes already exists.
|
||||||
quality_changes = self._container_registry.findInstanceContainers(name = custom_quality_name,
|
quality_changes = self._container_registry.findInstanceContainers(name = custom_quality_name,
|
||||||
type = "quality_changes")
|
type = "quality_changes")
|
||||||
@ -443,7 +445,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
quality_container_id = parser["containers"][str(_ContainerIndexes.Quality)]
|
quality_container_id = parser["containers"][str(_ContainerIndexes.Quality)]
|
||||||
quality_type = "empty_quality"
|
quality_type = "empty_quality"
|
||||||
if quality_container_id not in ("empty", "empty_quality"):
|
if quality_container_id not in ("empty", "empty_quality"):
|
||||||
quality_type = instance_container_info_dict[quality_container_id].parser["metadata"]["quality_type"]
|
quality_parser = cast(ConfigParser, instance_container_info_dict[quality_container_id].parser)
|
||||||
|
quality_type = quality_parser["metadata"]["quality_type"]
|
||||||
|
|
||||||
# Get machine info
|
# Get machine info
|
||||||
serialized = archive.open(global_stack_file).read().decode("utf-8")
|
serialized = archive.open(global_stack_file).read().decode("utf-8")
|
||||||
@ -497,7 +500,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
extruder_info = ExtruderInfo()
|
extruder_info = ExtruderInfo()
|
||||||
extruder_info.position = position
|
extruder_info.position = position
|
||||||
if parser.has_option("metadata", "enabled"):
|
if parser.has_option("metadata", "enabled"):
|
||||||
extruder_info.enabled = parser["metadata"]["enabled"]
|
extruder_info.enabled = parseBool(parser["metadata"]["enabled"])
|
||||||
if variant_id not in ("empty", "empty_variant"):
|
if variant_id not in ("empty", "empty_variant"):
|
||||||
if variant_id in instance_container_info_dict:
|
if variant_id in instance_container_info_dict:
|
||||||
extruder_info.variant_info = instance_container_info_dict[variant_id]
|
extruder_info.variant_info = instance_container_info_dict[variant_id]
|
||||||
@ -591,7 +594,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
self._machine_info.intent_category = intent_category
|
self._machine_info.intent_category = intent_category
|
||||||
|
|
||||||
is_printer_group = False
|
is_printer_group = False
|
||||||
if machine_conflict:
|
if machine_conflict and existing_global_stack:
|
||||||
group_name = existing_global_stack.getMetaDataEntry("group_name")
|
group_name = existing_global_stack.getMetaDataEntry("group_name")
|
||||||
if group_name is not None:
|
if group_name is not None:
|
||||||
is_printer_group = True
|
is_printer_group = True
|
||||||
@ -616,7 +619,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
self._dialog.setMachineType(machine_type)
|
self._dialog.setMachineType(machine_type)
|
||||||
self._dialog.setExtruders(extruders)
|
self._dialog.setExtruders(extruders)
|
||||||
self._dialog.setVariantType(variant_type_name)
|
self._dialog.setVariantType(variant_type_name)
|
||||||
self._dialog.setHasObjectsOnPlate(Application.getInstance().platformActivity)
|
self._dialog.setHasObjectsOnPlate(CuraApplication.getInstance().platformActivity)
|
||||||
self._dialog.show()
|
self._dialog.show()
|
||||||
|
|
||||||
# Block until the dialog is closed.
|
# Block until the dialog is closed.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user