mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-21 05:37:50 -06:00
Merge pull request #787 from Ultimaker/exception_handling_fixes
Minor Exception handling Fixes
This commit is contained in:
commit
e813c2c08e
2 changed files with 20 additions and 5 deletions
|
@ -5,17 +5,33 @@ import webbrowser
|
||||||
|
|
||||||
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QCoreApplication
|
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QCoreApplication
|
||||||
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit
|
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit
|
||||||
|
|
||||||
|
from UM.Logger import Logger
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
catalog = i18nCatalog("cura")
|
catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
# List of exceptions that should be considered "fatal" and abort the program.
|
||||||
|
# These are primarily some exception types that we simply cannot really recover from
|
||||||
|
# (MemoryError and SystemError) and exceptions that indicate grave errors in the
|
||||||
|
# code that cause the Python interpreter to fail (SyntaxError, ImportError).
|
||||||
|
fatal_exception_types = [
|
||||||
|
MemoryError,
|
||||||
|
SyntaxError,
|
||||||
|
ImportError,
|
||||||
|
SystemError,
|
||||||
|
]
|
||||||
|
|
||||||
def show(exception_type, value, tb):
|
def show(exception_type, value, tb):
|
||||||
debug_mode = False
|
debug_mode = False
|
||||||
if QCoreApplication.instance():
|
if QCoreApplication.instance():
|
||||||
debug_mode = QCoreApplication.instance().getCommandLineOption("debug-mode", False)
|
debug_mode = QCoreApplication.instance().getCommandLineOption("debug-mode", False)
|
||||||
|
|
||||||
traceback.print_exception(exception_type, value, tb)
|
Logger.log("c", "An uncaught exception has occurred!")
|
||||||
|
for line in traceback.format_exception(exception_type, value, tb):
|
||||||
|
for part in line.rstrip("\n").split("\n"):
|
||||||
|
Logger.log("c", part)
|
||||||
|
|
||||||
if not debug_mode:
|
if not debug_mode and exception_type not in fatal_exception_types:
|
||||||
return
|
return
|
||||||
|
|
||||||
application = QCoreApplication.instance()
|
application = QCoreApplication.instance()
|
||||||
|
@ -29,7 +45,7 @@ def show(exception_type, value, tb):
|
||||||
|
|
||||||
label = QLabel(dialog)
|
label = QLabel(dialog)
|
||||||
layout.addWidget(label)
|
layout.addWidget(label)
|
||||||
label.setText(catalog.i18nc("@label", "<p>An uncaught exception has occurred!</p><p>Please use the information below to post a bug report at <a href=\"http://github.com/Ultimaker/Cura/issues\">http://github.com/Ultimaker/Cura/issues</a></p>"))
|
label.setText(catalog.i18nc("@label", "<p>A fatal exception has occurred that we could not recover from!</p><p>Please use the information below to post a bug report at <a href=\"http://github.com/Ultimaker/Cura/issues\">http://github.com/Ultimaker/Cura/issues</a></p>"))
|
||||||
|
|
||||||
textarea = QTextEdit(dialog)
|
textarea = QTextEdit(dialog)
|
||||||
layout.addWidget(textarea)
|
layout.addWidget(textarea)
|
||||||
|
|
|
@ -51,8 +51,7 @@ class MachineManagerModel(QObject):
|
||||||
|
|
||||||
if active_machine_id != "":
|
if active_machine_id != "":
|
||||||
# An active machine was saved, so restore it.
|
# An active machine was saved, so restore it.
|
||||||
self.setActiveMachine(active_machine_id)
|
Application.getInstance().callLater(self.setActiveMachine, active_machine_id)
|
||||||
pass
|
|
||||||
|
|
||||||
globalContainerChanged = pyqtSignal()
|
globalContainerChanged = pyqtSignal()
|
||||||
activeMaterialChanged = pyqtSignal()
|
activeMaterialChanged = pyqtSignal()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue