Display ImportError messages in earlyinit errors.
This commit is contained in:
parent
94434ea739
commit
0f9a1fe178
@ -70,21 +70,22 @@ def _missing_str(name, debian=None, arch=None, windows=None, pip=None):
|
|||||||
return '<br /><br />'.join(blocks)
|
return '<br /><br />'.join(blocks)
|
||||||
|
|
||||||
|
|
||||||
def _die(message, exception=True):
|
def _die(message, exception=None):
|
||||||
"""Display an error message using Qt and quit.
|
"""Display an error message using Qt and quit.
|
||||||
|
|
||||||
We import the imports here as we want to do other stuff before the imports.
|
We import the imports here as we want to do other stuff before the imports.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
message: The message to display.
|
message: The message to display.
|
||||||
exception: Whether to print an exception with --debug.
|
exception: The exception object if we're handling an exception.
|
||||||
"""
|
"""
|
||||||
from PyQt5.QtWidgets import QApplication, QMessageBox
|
from PyQt5.QtWidgets import QApplication, QMessageBox
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
if '--debug' in sys.argv and exception:
|
if '--debug' in sys.argv and exception is not None:
|
||||||
print(file=sys.stderr)
|
print(file=sys.stderr)
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
|
message += '<br/><br/><br/><b>Error:</b><br/>{}'.format(exception)
|
||||||
msgbox = QMessageBox(QMessageBox.Critical, "qutebrowser: Fatal error!",
|
msgbox = QMessageBox(QMessageBox.Critical, "qutebrowser: Fatal error!",
|
||||||
message)
|
message)
|
||||||
msgbox.setTextFormat(Qt.RichText)
|
msgbox.setTextFormat(Qt.RichText)
|
||||||
@ -176,7 +177,7 @@ def check_pyqt_core():
|
|||||||
"""Check if PyQt core is installed."""
|
"""Check if PyQt core is installed."""
|
||||||
try:
|
try:
|
||||||
import PyQt5.QtCore # pylint: disable=unused-variable
|
import PyQt5.QtCore # pylint: disable=unused-variable
|
||||||
except ImportError:
|
except ImportError as e:
|
||||||
text = _missing_str('PyQt5',
|
text = _missing_str('PyQt5',
|
||||||
debian="apt-get install python3-pyqt5 "
|
debian="apt-get install python3-pyqt5 "
|
||||||
"python3-pyqt5.qtwebkit",
|
"python3-pyqt5.qtwebkit",
|
||||||
@ -189,6 +190,7 @@ def check_pyqt_core():
|
|||||||
text = text.replace('<b>', '')
|
text = text.replace('<b>', '')
|
||||||
text = text.replace('</b>', '')
|
text = text.replace('</b>', '')
|
||||||
text = text.replace('<br />', '\n')
|
text = text.replace('<br />', '\n')
|
||||||
|
text += '\n\nError: {}'.format(e)
|
||||||
if tkinter:
|
if tkinter:
|
||||||
root = tkinter.Tk()
|
root = tkinter.Tk()
|
||||||
root.withdraw()
|
root.withdraw()
|
||||||
@ -208,7 +210,7 @@ def check_qt_version():
|
|||||||
if qtutils.version_check('5.2.0', operator.lt):
|
if qtutils.version_check('5.2.0', operator.lt):
|
||||||
text = ("Fatal error: Qt and PyQt >= 5.2.0 are required, but {} is "
|
text = ("Fatal error: Qt and PyQt >= 5.2.0 are required, but {} is "
|
||||||
"installed.".format(qVersion()))
|
"installed.".format(qVersion()))
|
||||||
_die(text, exception=False)
|
_die(text)
|
||||||
|
|
||||||
|
|
||||||
def check_libraries():
|
def check_libraries():
|
||||||
@ -257,8 +259,8 @@ def check_libraries():
|
|||||||
for name, text in modules.items():
|
for name, text in modules.items():
|
||||||
try:
|
try:
|
||||||
importlib.import_module(name)
|
importlib.import_module(name)
|
||||||
except ImportError:
|
except ImportError as e:
|
||||||
_die(text)
|
_die(text, e)
|
||||||
|
|
||||||
|
|
||||||
def remove_inputhook():
|
def remove_inputhook():
|
||||||
|
Loading…
Reference in New Issue
Block a user