Fix typing

CURA-6643
This commit is contained in:
Lipu Fei 2019-08-27 14:09:16 +02:00
parent 946b2b943e
commit 79f11286a6
3 changed files with 19 additions and 11 deletions

View file

@ -1331,9 +1331,8 @@ class CuraApplication(QtApplication):
gcode_filename = None # type: Optional[str] gcode_filename = None # type: Optional[str]
for node in DepthFirstIterator(self.getController().getScene().getRoot()): for node in DepthFirstIterator(self.getController().getScene().getRoot()):
# Objects loaded from Gcode should also be included. # Objects loaded from Gcode should also be included.
gcode_list_decorator = node.getDecorator(GCodeListDecorator) gcode_filename = node.callDecoration("getGcodeFileName")
if gcode_list_decorator is not None and gcode_list_decorator.getGcodeFileName(): if gcode_filename is not None:
gcode_filename = gcode_list_decorator.getGcodeFileName()
break break
if not isinstance(node, CuraSceneNode) or not node.getMeshData(): if not isinstance(node, CuraSceneNode) or not node.getMeshData():
@ -1353,7 +1352,6 @@ class CuraApplication(QtApplication):
for node in nodes: for node in nodes:
mesh_data = node.getMeshData() mesh_data = node.getMeshData()
gcode_list_decorator = node.getDecorator(GCodeListDecorator)
if mesh_data and mesh_data.getFileName(): if mesh_data and mesh_data.getFileName():
job = ReadMeshJob(mesh_data.getFileName()) job = ReadMeshJob(mesh_data.getFileName())
job._node = node # type: ignore job._node = node # type: ignore

View file

@ -292,7 +292,7 @@ class FlavorParser:
extruder.getProperty("machine_nozzle_offset_y", "value")] extruder.getProperty("machine_nozzle_offset_y", "value")]
return result return result
def processGCodeStream(self, stream: str, filename: str) -> Optional[CuraSceneNode]: def processGCodeStream(self, stream: str, filename: str) -> Optional["CuraSceneNode"]:
Logger.log("d", "Preparing to load GCode") Logger.log("d", "Preparing to load GCode")
self._cancelled = False self._cancelled = False
# We obtain the filament diameter from the selected extruder to calculate line widths # We obtain the filament diameter from the selected extruder to calculate line widths

View file

@ -2,7 +2,7 @@
# Copyright (c) 2018 Ultimaker B.V. # Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
from typing import Optional from typing import Optional, Union, List, TYPE_CHECKING
from UM.FileHandler.FileReader import FileReader from UM.FileHandler.FileReader import FileReader
from UM.Mesh.MeshReader import MeshReader from UM.Mesh.MeshReader import MeshReader
@ -10,11 +10,15 @@ from UM.i18n import i18nCatalog
from UM.Application import Application from UM.Application import Application
from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType
from cura.Scene.CuraSceneNode import CuraSceneNode
catalog = i18nCatalog("cura") catalog = i18nCatalog("cura")
from .FlavorParser import FlavorParser
from . import MarlinFlavorParser, RepRapFlavorParser from . import MarlinFlavorParser, RepRapFlavorParser
if TYPE_CHECKING:
from UM.Scene.SceneNode import SceneNode
from cura.Scene.CuraSceneNode import CuraSceneNode
# Class for loading and parsing G-code files # Class for loading and parsing G-code files
class GCodeReader(MeshReader): class GCodeReader(MeshReader):
@ -34,7 +38,7 @@ class GCodeReader(MeshReader):
) )
self._supported_extensions = [".gcode", ".g"] self._supported_extensions = [".gcode", ".g"]
self._flavor_reader = None self._flavor_reader = None # type: Optional[FlavorParser]
Application.getInstance().getPreferences().addPreference("gcodereader/show_caution", True) Application.getInstance().getPreferences().addPreference("gcodereader/show_caution", True)
@ -59,9 +63,15 @@ class GCodeReader(MeshReader):
return self.preReadFromStream(file_data, args, kwargs) return self.preReadFromStream(file_data, args, kwargs)
def readFromStream(self, stream: str, filename: str) -> Optional["CuraSceneNode"]: def readFromStream(self, stream: str, filename: str) -> Optional["CuraSceneNode"]:
if self._flavor_reader is None:
return None
return self._flavor_reader.processGCodeStream(stream, filename) return self._flavor_reader.processGCodeStream(stream, filename)
def _read(self, file_name: str) -> Optional["CuraSceneNode"]: def _read(self, file_name: str) -> Union["SceneNode", List["SceneNode"]]:
with open(file_name, "r", encoding = "utf-8") as file: with open(file_name, "r", encoding = "utf-8") as file:
file_data = file.read() file_data = file.read()
return self.readFromStream(file_data, file_name) result = [] # type: List[SceneNode]
node = self.readFromStream(file_data, file_name)
if node is not None:
result.append(node)
return result