mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Revert "Added signal to prevent window closing if USB printer is printing"
This reverts commit 596a7b7169
.
This commit is contained in:
parent
a0c3767184
commit
ac3d3bc5c0
4 changed files with 1 additions and 83 deletions
|
@ -1701,22 +1701,3 @@ class CuraApplication(QtApplication):
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def showMoreInformationDialogForAnonymousDataCollection(self):
|
def showMoreInformationDialogForAnonymousDataCollection(self):
|
||||||
cast(SliceInfo, self._plugin_registry.getPluginObject("SliceInfoPlugin")).showMoreInfoDialog()
|
cast(SliceInfo, self._plugin_registry.getPluginObject("SliceInfoPlugin")).showMoreInfoDialog()
|
||||||
|
|
||||||
## Signal to check whether the application can be closed or not
|
|
||||||
checkCuraCloseChange = pyqtSignal()
|
|
||||||
|
|
||||||
# This variable is necessary to ensure that all methods that were subscribed for the checkCuraCloseChange event
|
|
||||||
# have been passed checks
|
|
||||||
_isCuraCanBeClosed = True
|
|
||||||
|
|
||||||
def setCuraCanBeClosed(self, value: bool):
|
|
||||||
self._isCuraCanBeClosed = value
|
|
||||||
|
|
||||||
@pyqtSlot(result=bool)
|
|
||||||
def preCloseEventHandler(self)-> bool:
|
|
||||||
|
|
||||||
# If any of checks failed then then _isCuraCanBeClosed should be set to False and Cura will not be closed
|
|
||||||
# after clicking the quit button
|
|
||||||
self.checkCuraCloseChange.emit()
|
|
||||||
|
|
||||||
return self._isCuraCanBeClosed
|
|
||||||
|
|
|
@ -435,9 +435,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
|
||||||
|
|
||||||
self._gcode_position += 1
|
self._gcode_position += 1
|
||||||
|
|
||||||
def getIsPrinting(self)-> bool:
|
|
||||||
return self._is_printing
|
|
||||||
|
|
||||||
|
|
||||||
class FirmwareUpdateState(IntEnum):
|
class FirmwareUpdateState(IntEnum):
|
||||||
idle = 0
|
idle = 0
|
||||||
|
|
|
@ -6,8 +6,7 @@ import platform
|
||||||
import time
|
import time
|
||||||
import serial.tools.list_ports
|
import serial.tools.list_ports
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, QCoreApplication
|
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal
|
||||||
from PyQt5.QtWidgets import QMessageBox
|
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Resources import Resources
|
from UM.Resources import Resources
|
||||||
|
@ -51,11 +50,6 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin):
|
||||||
|
|
||||||
self._application.globalContainerStackChanged.connect(self.updateUSBPrinterOutputDevices)
|
self._application.globalContainerStackChanged.connect(self.updateUSBPrinterOutputDevices)
|
||||||
|
|
||||||
self._application.checkCuraCloseChange.connect(self.checkWheterUSBIsActiveOrNot)
|
|
||||||
|
|
||||||
self._lock = threading.Lock()
|
|
||||||
self._confirm_dialog_visible = False
|
|
||||||
|
|
||||||
# The method updates/reset the USB settings for all connected USB devices
|
# The method updates/reset the USB settings for all connected USB devices
|
||||||
def updateUSBPrinterOutputDevices(self):
|
def updateUSBPrinterOutputDevices(self):
|
||||||
for key, device in self._usb_output_devices.items():
|
for key, device in self._usb_output_devices.items():
|
||||||
|
@ -190,51 +184,3 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin):
|
||||||
@classmethod
|
@classmethod
|
||||||
def getInstance(cls, *args, **kwargs) -> "USBPrinterOutputDeviceManager":
|
def getInstance(cls, *args, **kwargs) -> "USBPrinterOutputDeviceManager":
|
||||||
return cls.__instance
|
return cls.__instance
|
||||||
|
|
||||||
# The method checks whether a printer is printing via USB or not before closing cura. If the printer is printing then pop up a
|
|
||||||
# dialog to confirm stop printing
|
|
||||||
def checkWheterUSBIsActiveOrNot(self)-> None:
|
|
||||||
|
|
||||||
is_printing = False
|
|
||||||
for key, device in self._usb_output_devices.items():
|
|
||||||
if type(device) is USBPrinterOutputDevice.USBPrinterOutputDevice:
|
|
||||||
if device.getIsPrinting():
|
|
||||||
is_printing = True
|
|
||||||
break
|
|
||||||
|
|
||||||
if is_printing:
|
|
||||||
if threading.current_thread() != threading.main_thread():
|
|
||||||
self._lock.acquire()
|
|
||||||
self._confirm_dialog_visible = True
|
|
||||||
|
|
||||||
CuraApplication.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Confirm stop printing"),
|
|
||||||
i18n_catalog.i18nc("@window:message","A USB print is in progress, closing Cura will stop this print. Are you sure?"),
|
|
||||||
buttons=QMessageBox.Yes + QMessageBox.No,
|
|
||||||
icon=QMessageBox.Question,
|
|
||||||
callback=self._messageBoxCallback)
|
|
||||||
# Wait for dialog result
|
|
||||||
self.waitForClose()
|
|
||||||
|
|
||||||
## Block thread until the dialog is closed.
|
|
||||||
def waitForClose(self)-> None:
|
|
||||||
if self._confirm_dialog_visible:
|
|
||||||
if threading.current_thread() != threading.main_thread():
|
|
||||||
self._lock.acquire()
|
|
||||||
self._lock.release()
|
|
||||||
else:
|
|
||||||
# If this is not run from a separate thread, we need to ensure that the events are still processed.
|
|
||||||
while self._confirm_dialog_visible:
|
|
||||||
time.sleep(1 / 50)
|
|
||||||
QCoreApplication.processEvents() # Ensure that the GUI does not freeze.
|
|
||||||
|
|
||||||
def _messageBoxCallback(self, button):
|
|
||||||
if button == QMessageBox.Yes:
|
|
||||||
self._application.setCuraCanBeClosed(True)
|
|
||||||
else:
|
|
||||||
self._application.setCuraCanBeClosed(False)
|
|
||||||
|
|
||||||
self._confirm_dialog_visible = False
|
|
||||||
try:
|
|
||||||
self._lock.release()
|
|
||||||
except:
|
|
||||||
pass
|
|
|
@ -22,12 +22,6 @@ UM.MainWindow
|
||||||
|
|
||||||
backgroundColor: UM.Theme.getColor("viewport_background")
|
backgroundColor: UM.Theme.getColor("viewport_background")
|
||||||
|
|
||||||
// Event which does the check before closing the window
|
|
||||||
onPreCloseChange:
|
|
||||||
{
|
|
||||||
event.accepted = CuraApplication.preCloseEventHandler()
|
|
||||||
}
|
|
||||||
|
|
||||||
// This connection is here to support legacy printer output devices that use the showPrintMonitor signal on Application to switch to the monitor stage
|
// This connection is here to support legacy printer output devices that use the showPrintMonitor signal on Application to switch to the monitor stage
|
||||||
// It should be phased out in newer plugin versions.
|
// It should be phased out in newer plugin versions.
|
||||||
Connections
|
Connections
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue