mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-28 18:02:38 +02:00
Merge 2f611562c4
into dd3ab71065
This commit is contained in:
commit
9509572974
2 changed files with 36 additions and 5 deletions
|
@ -1109,7 +1109,8 @@ class SettingsWidget(QtWidgets.QWidget):
|
|||
|
||||
class ConvertTask(QtCore.QObject):
|
||||
finished = QtCore.Signal(bool)
|
||||
update = QtCore.Signal(bool, str, int)
|
||||
update_progress = QtCore.Signal(bool, str, int)
|
||||
update_preview = QtCore.Signal(int, int, bytes)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
@ -1128,6 +1129,7 @@ class ConvertTask(QtCore.QObject):
|
|||
self.document,
|
||||
self.ocr_lang,
|
||||
self.progress_callback,
|
||||
self.preview_callback,
|
||||
)
|
||||
self.finished.emit(self.error)
|
||||
|
||||
|
@ -1135,7 +1137,10 @@ class ConvertTask(QtCore.QObject):
|
|||
if error:
|
||||
self.error = True
|
||||
|
||||
self.update.emit(error, text, percentage)
|
||||
self.update_progress.emit(error, text, percentage)
|
||||
|
||||
def preview_callback(self, width: int, height: int, data: bytes) -> None:
|
||||
self.update_preview.emit(width, height, data)
|
||||
|
||||
|
||||
class DocumentsListWidget(QtWidgets.QListWidget):
|
||||
|
@ -1157,7 +1162,7 @@ class DocumentsListWidget(QtWidgets.QListWidget):
|
|||
def documents_added(self, docs: List[Document]) -> None:
|
||||
for document in docs:
|
||||
item = QtWidgets.QListWidgetItem()
|
||||
item.setSizeHint(QtCore.QSize(500, 50))
|
||||
item.setSizeHint(QtCore.QSize(500, 800))
|
||||
widget = DocumentWidget(self.dangerzone, document)
|
||||
self.addItem(item)
|
||||
self.setItemWidget(item, widget)
|
||||
|
@ -1174,7 +1179,8 @@ class DocumentsListWidget(QtWidgets.QListWidget):
|
|||
for doc in self.docs_list:
|
||||
task = ConvertTask(self.dangerzone, doc, self.get_ocr_lang())
|
||||
doc_widget = self.docs_list_widget_map[doc]
|
||||
task.update.connect(doc_widget.update_progress)
|
||||
task.update_progress.connect(doc_widget.update_progress)
|
||||
task.update_preview.connect(doc_widget.update_preview)
|
||||
task.finished.connect(doc_widget.all_done)
|
||||
self.thread_pool.apply_async(task.convert_document)
|
||||
|
||||
|
@ -1229,13 +1235,22 @@ class DocumentWidget(QtWidgets.QWidget):
|
|||
self.progress.setRange(0, 100)
|
||||
self.progress.setValue(0)
|
||||
|
||||
# Preview
|
||||
self.doc_preview = QtWidgets.QLabel()
|
||||
self.doc_preview.setAlignment(
|
||||
QtCore.Qt.AlignVCenter | QtCore.Qt.AlignLeft
|
||||
)
|
||||
|
||||
# Layout
|
||||
layout = QtWidgets.QHBoxLayout()
|
||||
layout.addWidget(self.status_image)
|
||||
layout.addWidget(self.dangerous_doc_label)
|
||||
layout.addWidget(self.progress)
|
||||
layout.addWidget(self.error_label)
|
||||
self.setLayout(layout)
|
||||
layout2 = QtWidgets.QVBoxLayout()
|
||||
layout2.addLayout(layout)
|
||||
layout2.addWidget(self.doc_preview)
|
||||
self.setLayout(layout2)
|
||||
|
||||
def update_progress(self, error: bool, text: str, percentage: int) -> None:
|
||||
self.update_status_image()
|
||||
|
@ -1249,6 +1264,16 @@ class DocumentWidget(QtWidgets.QWidget):
|
|||
self.progress.setToolTip(text)
|
||||
self.progress.setValue(percentage)
|
||||
|
||||
def update_preview(self, width: int, height: int, data: bytes) -> None:
|
||||
log.debug(f"UPDATTING PREVIEW {width}, {height}")
|
||||
# with open("tests/test_docs/sample-ppm.ppm", 'rb') as ppm_file:
|
||||
ppm_header = f"P6\n{width} {height}\n255\n".encode('ascii')
|
||||
ppm_data = ppm_header + data
|
||||
log.info(ppm_data[:20])
|
||||
pix = QtGui.QPixmap()
|
||||
pix.loadFromData(ppm_data)
|
||||
self.doc_preview.setPixmap(pix)
|
||||
|
||||
def load_status_image(self, filename: str) -> QtGui.QPixmap:
|
||||
path = get_resource_path(filename)
|
||||
img = QtGui.QImage(path)
|
||||
|
|
|
@ -104,8 +104,10 @@ class IsolationProvider(ABC):
|
|||
document: Document,
|
||||
ocr_lang: Optional[str],
|
||||
progress_callback: Optional[Callable] = None,
|
||||
preview_callback: Optional[Callable] = None,
|
||||
) -> None:
|
||||
self.progress_callback = progress_callback
|
||||
self.preview_callback = preview_callback
|
||||
document.mark_as_converting()
|
||||
try:
|
||||
with tempfile.TemporaryDirectory() as t:
|
||||
|
@ -161,6 +163,10 @@ class IsolationProvider(ABC):
|
|||
num_pixels,
|
||||
)
|
||||
|
||||
# Preview
|
||||
if self.preview_callback:
|
||||
self.preview_callback(width, height, untrusted_pixels)
|
||||
|
||||
# Wrapper code
|
||||
with open(f"{tempdir}/pixels/page-{page}.width", "w") as f_width:
|
||||
f_width.write(str(width))
|
||||
|
|
Loading…
Reference in a new issue