mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
WIP: Fix hanging upon send gz
This commit is contained in:
parent
0a1fd51b2f
commit
0852cd2c20
2 changed files with 23 additions and 8 deletions
|
@ -50,6 +50,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
|
|
||||||
self._number_of_extruders = 2
|
self._number_of_extruders = 2
|
||||||
|
|
||||||
|
self._dummy_lambdas = set()
|
||||||
|
|
||||||
self._print_jobs = []
|
self._print_jobs = []
|
||||||
|
|
||||||
self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "ClusterMonitorItem.qml")
|
self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "ClusterMonitorItem.qml")
|
||||||
|
@ -64,6 +66,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
self._authentication_state = AuthState.Authenticated
|
self._authentication_state = AuthState.Authenticated
|
||||||
|
|
||||||
self._error_message = None
|
self._error_message = None
|
||||||
|
self._write_job_progress_message = None
|
||||||
self._progress_message = None
|
self._progress_message = None
|
||||||
|
|
||||||
self._active_printer = None # type: Optional[PrinterOutputModel]
|
self._active_printer = None # type: Optional[PrinterOutputModel]
|
||||||
|
@ -179,16 +182,33 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
|
|
||||||
job = WriteFileJob(writer, stream, nodes, preferred_format["mode"])
|
job = WriteFileJob(writer, stream, nodes, preferred_format["mode"])
|
||||||
|
|
||||||
|
self._write_job_progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, dismissable = False, progress = -1,
|
||||||
|
title = i18n_catalog.i18nc("@info:title", "Sending Data"), use_inactivity_timer = False)
|
||||||
|
self._write_job_progress_message.show()
|
||||||
|
|
||||||
|
self._dummy_lambdas = (target_printer, preferred_format, stream)
|
||||||
|
job.finished.connect(self._sendPrintJobWaitOnWriteJobFinished)
|
||||||
|
|
||||||
|
job.start()
|
||||||
|
|
||||||
|
yield True #Return that we had success!
|
||||||
|
yield #To prevent having to catch the StopIteration exception.
|
||||||
|
|
||||||
|
from cura.Utils.Threading import call_on_qt_thread
|
||||||
|
|
||||||
|
def _sendPrintJobWaitOnWriteJobFinished(self, job):
|
||||||
|
self._write_job_progress_message.hide()
|
||||||
|
|
||||||
self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, dismissable = False, progress = -1,
|
self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, dismissable = False, progress = -1,
|
||||||
title = i18n_catalog.i18nc("@info:title", "Sending Data"))
|
title = i18n_catalog.i18nc("@info:title", "Sending Data"))
|
||||||
self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), icon = None, description = "")
|
self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), icon = None, description = "")
|
||||||
self._progress_message.actionTriggered.connect(self._progressMessageActionTriggered)
|
self._progress_message.actionTriggered.connect(self._progressMessageActionTriggered)
|
||||||
self._progress_message.show()
|
self._progress_message.show()
|
||||||
|
|
||||||
job.start()
|
|
||||||
|
|
||||||
parts = []
|
parts = []
|
||||||
|
|
||||||
|
target_printer, preferred_format, stream = self._dummy_lambdas
|
||||||
|
|
||||||
# If a specific printer was selected, it should be printed with that machine.
|
# If a specific printer was selected, it should be printed with that machine.
|
||||||
if target_printer:
|
if target_printer:
|
||||||
target_printer = self._printer_uuid_to_unique_name_mapping[target_printer]
|
target_printer = self._printer_uuid_to_unique_name_mapping[target_printer]
|
||||||
|
@ -199,8 +219,6 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
|
|
||||||
file_name = Application.getInstance().getPrintInformation().jobName + "." + preferred_format["extension"]
|
file_name = Application.getInstance().getPrintInformation().jobName + "." + preferred_format["extension"]
|
||||||
|
|
||||||
while not job.isFinished():
|
|
||||||
sleep(0.1)
|
|
||||||
output = stream.getvalue() #Either str or bytes depending on the output mode.
|
output = stream.getvalue() #Either str or bytes depending on the output mode.
|
||||||
if isinstance(stream, io.StringIO):
|
if isinstance(stream, io.StringIO):
|
||||||
output = output.encode("utf-8")
|
output = output.encode("utf-8")
|
||||||
|
@ -209,9 +227,6 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
|
|
||||||
self._latest_reply_handler = self.postFormWithParts("print_jobs/", parts, onFinished=self._onPostPrintJobFinished, onProgress=self._onUploadPrintJobProgress)
|
self._latest_reply_handler = self.postFormWithParts("print_jobs/", parts, onFinished=self._onPostPrintJobFinished, onProgress=self._onUploadPrintJobProgress)
|
||||||
|
|
||||||
yield True #Return that we had success!
|
|
||||||
yield #To prevent having to catch the StopIteration exception.
|
|
||||||
|
|
||||||
@pyqtProperty(QObject, notify=activePrinterChanged)
|
@pyqtProperty(QObject, notify=activePrinterChanged)
|
||||||
def activePrinter(self) -> Optional[PrinterOutputModel]:
|
def activePrinter(self) -> Optional[PrinterOutputModel]:
|
||||||
return self._active_printer
|
return self._active_printer
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"manufacturer": "Ultimaker B.V.",
|
"manufacturer": "Ultimaker B.V.",
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"file_formats": "text/x-gcode;application/gzip",
|
"file_formats": "application/gzip;text/x-gcode",
|
||||||
"platform": "ultimaker3_platform.obj",
|
"platform": "ultimaker3_platform.obj",
|
||||||
"platform_texture": "Ultimaker3backplate.png",
|
"platform_texture": "Ultimaker3backplate.png",
|
||||||
"platform_offset": [0, 0, 0],
|
"platform_offset": [0, 0, 0],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue