From 6707cbbc4af7483f142f3e1681f1b6d0b7c92b30 Mon Sep 17 00:00:00 2001 From: deeplow Date: Mon, 10 Oct 2022 18:42:47 +0100 Subject: [PATCH] Add conversion status icon next to each document Allows the user to see the staus of each document at a gance. --- dangerzone/gui/main_window.py | 46 ++++++++++++++++++------- share/status_converting.png | Bin 0 -> 1134 bytes share/{error.png => status_failed.png} | Bin share/status_safe.png | Bin 0 -> 1843 bytes share/status_unconverted.png | Bin 0 -> 1058 bytes 5 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 share/status_converting.png rename share/{error.png => status_failed.png} (100%) create mode 100644 share/status_safe.png create mode 100644 share/status_unconverted.png diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index f70a5d2..280ad1e 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -597,21 +597,20 @@ class DocumentWidget(QtWidgets.QWidget): f"Suspicious: {os.path.basename(self.document.input_filename)}" ) - # Label - self.error_image = QtWidgets.QLabel() - self.error_image.setPixmap( - QtGui.QPixmap.fromImage(QtGui.QImage(get_resource_path("error.png"))) - ) - self.error_image.hide() + # Conversion status images + self.img_status_unconverted = self.load_status_image("status_unconverted.png") + self.img_status_converting = self.load_status_image("status_converting.png") + self.img_status_failed = self.load_status_image("status_failed.png") + self.img_status_safe = self.load_status_image("status_safe.png") + self.status_image = QtWidgets.QLabel() + self.status_image.setPixmap(self.img_status_unconverted) + # Label 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) + self.label.hide() # only show on error # Progress bar self.progress = QtWidgets.QProgressBar() @@ -620,10 +619,11 @@ class DocumentWidget(QtWidgets.QWidget): # Layout layout = QtWidgets.QHBoxLayout() + layout.addWidget(self.status_image) layout.addWidget(self.dangerous_doc_label) layout.addStretch() - layout.addLayout(label_layout) layout.addWidget(self.progress) + layout.addWidget(self.label, stretch=1) layout.addStretch() self.setLayout(layout) @@ -636,13 +636,35 @@ class DocumentWidget(QtWidgets.QWidget): def update_progress(self, error: bool, text: str, percentage: int) -> None: if error: self.error = True - self.error_image.show() + self.status_image.show() self.progress.hide() + self.label.show() + + self.update_status_image() self.label.setText(text) + self.progress.setToolTip(text) self.progress.setValue(percentage) + def load_status_image(self, filename: str) -> QtGui.QPixmap: + path = get_resource_path(filename) + img = QtGui.QImage(path) + image = QtGui.QPixmap.fromImage(img) + return image.scaled(QtCore.QSize(15, 15)) + + def update_status_image(self) -> None: + if self.document.is_unconverted(): + self.status_image.setPixmap(self.img_status_unconverted) + elif self.document.is_converting(): + self.status_image.setPixmap(self.img_status_converting) + elif self.document.is_failed(): + self.status_image.setPixmap(self.img_status_failed) + elif self.document.is_safe(): + self.status_image.setPixmap(self.img_status_safe) + def all_done(self) -> None: + self.update_status_image() + if self.error: return diff --git a/share/status_converting.png b/share/status_converting.png new file mode 100644 index 0000000000000000000000000000000000000000..4afc83a678cf523fce1958958e6c7abac5819ef7 GIT binary patch literal 1134 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sjKx9jPK-BC>eK@{oCO|{#SDy+ z9w5xPB(ruSP(fILPlzi}a`y%SDxzKMP)ysiQF!lWsXZG-_HB{fvq|*8R^>xGb@p#n z+P_s{&qh(0y@EhpJJ<4UUcn1Qs~7Mtp1}p=&YQxuZ58kA30#|&^X^_RuwgNX4V2oo zj&IIHE+Bj5Tpl1fcM{k3)qFt4@;M+b5N%!oV$7SuvttcN3lITyK^P0BLeo{g-0zg)N79Kub+{9R%`rfAJ& zj6Jm^*wg*a^s_e$l1`?|8l4vJGFi7O;>6}3LGm+ePjC7%HDllYHJ>HJ<`mf<<(IJW zYkVlN!P4s~AO8UbZMX2S%ISa3TIo#v&2{bT+>jS<^0uw`xF*C(D~;D~W-%+HM3uXo z<>T4QV~hj8{%f{M3zCxetp3PQBNKLfOPP@HJjM-fb}JQyjtD$|aPYbQD+%>#Ddu;# zGXs6@M%G`EX8AQM(B6#YOgJCw2E`L6g;+N}%+_xcuq(g6hO_p&K}#WL^B+-x<`0X- z5Bul*IO?1H_gGt?E>rxJz#NI!iVYTRypPw3Z;rlXVdnGapX^S19vv6xq8}F$HqH8M=~hl{J%cb-vvA$J)wz3FUB%MZ@khVTzE-z?cwSSCOYXYBpt&&~T zT+7y1T2j+Ap-5}y)9yEFKsbJYD@<);T3K0RW7E B4*mcD literal 0 HcmV?d00001 diff --git a/share/error.png b/share/status_failed.png similarity index 100% rename from share/error.png rename to share/status_failed.png diff --git a/share/status_safe.png b/share/status_safe.png new file mode 100644 index 0000000000000000000000000000000000000000..aa6db5487837c5fe4e4719cb9b2ff68f8882f349 GIT binary patch literal 1843 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 Q0}~~Kr>mdKI;Vst00`Xa)c^nh literal 0 HcmV?d00001