Fix error message user interface

This commit is contained in:
Micah Lee 2021-08-06 12:57:53 -07:00
parent 7c756c194e
commit ea47a2e92c
No known key found for this signature in database
GPG key ID: 403C2657CD994F73
2 changed files with 28 additions and 6 deletions

View file

@ -423,13 +423,14 @@ class SettingsWidget(QtWidgets.QWidget):
class ConvertThread(QtCore.QThread):
finished = QtCore.Signal()
finished = QtCore.Signal(bool)
update = QtCore.Signal(bool, str, int)
def __init__(self, global_common, common):
super(ConvertThread, self).__init__()
self.global_common = global_common
self.common = common
self.error = False
def run(self):
ocr_lang = self.global_common.ocr_languages[
@ -443,19 +444,20 @@ class ConvertThread(QtCore.QThread):
ocr_lang,
self.stdout_callback,
):
self.finished.emit()
self.finished.emit(self.error)
def stdout_callback(self, line):
try:
status = json.loads(line)
except:
print(f"Invalid JSON returned from container: {line}")
self.error = True
self.update.emit(True, "Invalid JSON returned from container", 0)
return
s = Style.BRIGHT + Fore.CYAN + f"{status['percentage']}% "
if status["error"]:
self.error = True
s += Style.RESET_ALL + Fore.RED + status["text"]
else:
s += Style.RESET_ALL + status["text"]
@ -473,6 +475,8 @@ class ConvertWidget(QtWidgets.QWidget):
self.gui_common = gui_common
self.common = common
self.error = False
# Dangerous document label
self.dangerous_doc_label = QtWidgets.QLabel()
self.dangerous_doc_label.setAlignment(QtCore.Qt.AlignCenter)
@ -480,11 +484,25 @@ class ConvertWidget(QtWidgets.QWidget):
"QLabel { font-size: 16px; font-weight: bold; }"
)
# Label
self.error_image = QtWidgets.QLabel()
self.error_image.setPixmap(
QtGui.QPixmap.fromImage(
QtGui.QImage(self.global_common.get_resource_path("error.png"))
)
)
self.error_image.hide()
self.label = QtWidgets.QLabel()
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setWordWrap(True)
self.label.setStyleSheet("QLabel { font-size: 18px; }")
label_layout = QtWidgets.QHBoxLayout()
label_layout.addWidget(self.error_image)
label_layout.addWidget(self.label, stretch=1)
# Progress bar
self.progress = QtWidgets.QProgressBar()
self.progress.setRange(0, 100)
self.progress.setValue(0)
@ -493,7 +511,7 @@ class ConvertWidget(QtWidgets.QWidget):
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.dangerous_doc_label)
layout.addStretch()
layout.addWidget(self.label)
layout.addLayout(label_layout)
layout.addWidget(self.progress)
layout.addStretch()
self.setLayout(layout)
@ -512,13 +530,17 @@ class ConvertWidget(QtWidgets.QWidget):
def update(self, error, text, percentage):
if error:
# TODO: add error image or something
pass
self.error = True
self.error_image.show()
self.progress.hide()
self.label.setText(text)
self.progress.setValue(percentage)
def all_done(self):
if self.error:
return
# In Windows, open Explorer with the safe PDF in focus
if platform.system() == "Windows":
dest_filename_windows = self.common.output_filename.replace("/", "\\")

BIN
share/error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB