diff --git a/octoprint/printer.py b/octoprint/printer.py index 9429bbc..eee862e 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -568,83 +568,6 @@ class Printer(): def isLoading(self): return self._gcodeLoader is not None -class GcodeLoader(threading.Thread): - """ - The GcodeLoader takes care of loading a gcode-File from disk and parsing it into a gcode object in a separate - thread while constantly notifying interested listeners about the current progress. - The progress is returned as a float value between 0 and 1 which is to be interpreted as the percentage of completion. - """ - - def __init__(self, filename, progressCallback, loadedCallback): - threading.Thread.__init__(self) - - self._progressCallback = progressCallback - self._loadedCallback = loadedCallback - - self._filename = filename - self._gcodeList = None - - def run(self): - #Send an initial M110 to reset the line counter to zero. - prevLineType = lineType = "CUSTOM" - gcodeList = ["M110 N0"] - filesize = os.stat(self._filename).st_size - with open(self._filename, "r") as file: - for line in file: - if line.startswith(";TYPE:"): - lineType = line[6:].strip() - if ";" in line: - line = line[0:line.find(";")] - line = line.strip() - if len(line) > 0: - if prevLineType != lineType: - gcodeList.append((line, lineType, )) - else: - gcodeList.append(line) - prevLineType = lineType - self._onLoadingProgress(float(file.tell()) / float(filesize)) - - self._gcodeList = gcodeList - self._loadedCallback(self._filename, self._gcodeList) - - def _onLoadingProgress(self, progress): - self._progressCallback(self._filename, progress, "loading") - - def _onParsingProgress(self, progress): - self._progressCallback(self._filename, progress, "parsing") - -class SdFileStreamer(threading.Thread): - def __init__(self, comm, filename, file, progressCallback, finishCallback): - threading.Thread.__init__(self) - - self._comm = comm - self._filename = filename - self._file = file - self._progressCallback = progressCallback - self._finishCallback = finishCallback - - def run(self): - if self._comm.isBusy(): - return - - name = self._filename[:self._filename.rfind(".")] - sdFilename = name[:8].lower() + ".gco" - try: - size = os.stat(self._file).st_size - with open(self._file, "r") as f: - self._comm.startSdFileTransfer(sdFilename) - for line in f: - if ";" in line: - line = line[0:line.find(";")] - line = line.strip() - if len(line) > 0: - self._comm.sendCommand(line) - time.sleep(0.001) # do not send too fast - self._progressCallback(sdFilename, float(f.tell()) / float(size)) - finally: - self._comm.endSdFileTransfer(sdFilename) - self._finishCallback(sdFilename) - class StateMonitor(object): def __init__(self, ratelimit, updateCallback, addTemperatureCallback, addLogCallback, addMessageCallback): self._ratelimit = ratelimit