Get OCR settings before conversion starts

In preparation for adding a limit on how many convert threads exist, we
are simplifying its logic. Getting ocr_lang doesn't seem to belong to
the thread.
This commit is contained in:
deeplow 2022-10-11 16:26:25 +01:00
parent 95a0536c61
commit 3c1e8a232d
No known key found for this signature in database
GPG key ID: 577982871529A52A

View file

@ -528,23 +528,16 @@ class ConvertThread(QtCore.QThread):
finished = QtCore.Signal(bool) finished = QtCore.Signal(bool)
update = QtCore.Signal(bool, str, int) update = QtCore.Signal(bool, str, int)
def __init__(self, dangerzone: DangerzoneGui, document: Document) -> None: def __init__(self, document: Document, ocr_lang: str = None) -> None:
super(ConvertThread, self).__init__() super(ConvertThread, self).__init__()
self.dangerzone = dangerzone
self.document = document self.document = document
self.ocr_lang = ocr_lang
self.error = False self.error = False
def run(self) -> None: def run(self) -> None:
if self.dangerzone.settings.get("ocr"):
ocr_lang = self.dangerzone.ocr_languages[
self.dangerzone.settings.get("ocr_language")
]
else:
ocr_lang = None
if convert( if convert(
self.document, self.document,
ocr_lang, self.ocr_lang,
self.stdout_callback, self.stdout_callback,
): ):
self.finished.emit(self.error) self.finished.emit(self.error)
@ -629,11 +622,19 @@ class DocumentWidget(QtWidgets.QWidget):
self.setLayout(layout) self.setLayout(layout)
def start(self) -> None: def start(self) -> None:
self.convert_t = ConvertThread(self.dangerzone, self.document) self.convert_t = ConvertThread(self.document, self.get_ocr_lang())
self.convert_t.update.connect(self.update_progress) self.convert_t.update.connect(self.update_progress)
self.convert_t.finished.connect(self.all_done) self.convert_t.finished.connect(self.all_done)
self.convert_t.start() self.convert_t.start()
def get_ocr_lang(self) -> Optional[str]:
ocr_lang = None
if self.dangerzone.settings.get("ocr"):
ocr_lang = self.dangerzone.ocr_languages[
self.dangerzone.settings.get("ocr_language")
]
return ocr_lang
def update_progress(self, error: bool, text: str, percentage: int) -> None: def update_progress(self, error: bool, text: str, percentage: int) -> None:
self.update_status_image() self.update_status_image()
if error: if error: