From 58c675d1fa90a7247233d9887a460cf5a8e4cbf5 Mon Sep 17 00:00:00 2001 From: glubsy Date: Wed, 15 Jul 2020 05:25:47 +0200 Subject: [PATCH] Add custom icons * Use custom icons on platforms which do not provide theme * Old zoom icons credits to "schollidesign" from icon pack Office and Entertainment (GPL licence). * Exchange icon credit to Jason Cho (Unknown license). * Use hack to resize viewers on first show() as well --- images/exchange.png | Bin 0 -> 797 bytes images/exchange_purple.png | Bin 0 -> 685 bytes images/old_zoom_best_fit.png | Bin 0 -> 12499 bytes images/old_zoom_in.png | Bin 0 -> 11564 bytes images/old_zoom_original.png | Bin 0 -> 12189 bytes images/old_zoom_out.png | Bin 0 -> 11522 bytes qt/dg.qrc | 5 +++++ qt/pe/details_dialog.py | 38 +++++++++++++++++++---------------- qt/pe/image_viewer.py | 19 ++++++++++++------ 9 files changed, 39 insertions(+), 23 deletions(-) create mode 100644 images/exchange.png create mode 100644 images/exchange_purple.png create mode 100644 images/old_zoom_best_fit.png create mode 100644 images/old_zoom_in.png create mode 100644 images/old_zoom_original.png create mode 100644 images/old_zoom_out.png diff --git a/images/exchange.png b/images/exchange.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed902b78ec155cf08e2d1e82533ed00c8d2d367 GIT binary patch literal 797 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 literal 0 HcmV?d00001 diff --git a/images/old_zoom_in.png b/images/old_zoom_in.png new file mode 100644 index 0000000000000000000000000000000000000000..fbcbe2c169fff1a7a348ee6b4a15cd1c67251f41 GIT binary patch literal 11564 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 I-a7LC044CYApigX literal 0 HcmV?d00001 diff --git a/images/old_zoom_out.png b/images/old_zoom_out.png new file mode 100644 index 0000000000000000000000000000000000000000..f7e84c98e160ebe86263fc9658e808f43d7b854e GIT binary patch literal 11522 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 P%7DDAvP`A4Y4HC6euIu3 literal 0 HcmV?d00001 diff --git a/qt/dg.qrc b/qt/dg.qrc index 545a9806..941a7340 100644 --- a/qt/dg.qrc +++ b/qt/dg.qrc @@ -5,5 +5,10 @@ ../images/plus_8.png ../images/minus_8.png ../qtlib/images/search_clear_13.png + ../images/exchange_purple.png + ../images/old_zoom_in.png + ../images/old_zoom_out.png + ../images/old_zoom_original.png + ../images/old_zoom_best_fit.png diff --git a/qt/pe/details_dialog.py b/qt/pe/details_dialog.py index 7dcf0cd9..15c16157 100644 --- a/qt/pe/details_dialog.py +++ b/qt/pe/details_dialog.py @@ -90,23 +90,7 @@ class DetailsDialog(DetailsDialogBase): # --- Override def resizeEvent(self, event): - # HACK referenceViewer might be 1 pixel shorter in width - # due to the toolbar in the middle keeping the same width, - # so resizing in the GridLayout's engine leads to not enough space - # left for the panel on the right. - # This ensures same size while shrinking at least: - self.horizontalLayout.setColumnMinimumWidth( - 0, self.selectedImageViewer.size().width()) - self.horizontalLayout.setColumnMinimumWidth( - 2, self.selectedImageViewer.size().width()) - # This works when expanding but it's ugly: - if self.selectedImageViewer.size().width() > self.referenceImageViewer.size().width(): - # print(f"""Before selected size: {self.selectedImageViewer.size()}\n""", - # f"""Before reference size: {self.referenceImageViewer.size()}""") - self.selectedImageViewer.resize(self.referenceImageViewer.size()) - # print(f"""After selected size: {self.selectedImageViewer.size()}\n""", - # f"""After reference size: {self.referenceImageViewer.size()}""") - + self.ensure_same_sizes() if self.vController is None or not self.vController.bestFit: return # Only update the scaled down pixmaps @@ -122,8 +106,28 @@ class DetailsDialog(DetailsDialogBase): # Windows seems to add a few pixels more to the table somehow + 5 if ISWINDOWS else 0) DetailsDialogBase.show(self) + self.ensure_same_sizes() self._update() + def ensure_same_sizes(self): + # HACK referenceViewer might be 1 pixel shorter in width + # due to the toolbar in the middle keeping the same width, + # so resizing in the GridLayout's engine leads to not enough space + # left for the panel on the right. + # This ensures same size while shrinking at least: + self.horizontalLayout.setColumnMinimumWidth( + 0, self.selectedImageViewer.size().width()) + self.horizontalLayout.setColumnMinimumWidth( + 2, self.selectedImageViewer.size().width()) + + # This works when expanding but it's ugly: + if self.selectedImageViewer.size().width() > self.referenceImageViewer.size().width(): + # print(f"""Before selected size: {self.selectedImageViewer.size()}\n""", + # f"""Before reference size: {self.referenceImageViewer.size()}""") + self.selectedImageViewer.resize(self.referenceImageViewer.size()) + # print(f"""After selected size: {self.selectedImageViewer.size()}\n""", + # f"""After reference size: {self.referenceImageViewer.size()}""") + # model --> view def refresh(self): DetailsDialogBase.refresh(self) diff --git a/qt/pe/image_viewer.py b/qt/pe/image_viewer.py index 54366e98..663b5cf7 100644 --- a/qt/pe/image_viewer.py +++ b/qt/pe/image_viewer.py @@ -10,6 +10,7 @@ from PyQt5.QtWidgets import ( QToolBar, QToolButton, QAction, QWidget, QScrollArea, QApplication, QAbstractScrollArea, QStyle) from hscommon.trans import trget +from hscommon.plat import ISLINUX tr = trget("ui") MAX_SCALE = 12.0 @@ -21,7 +22,7 @@ def createActions(actions, target): for name, shortcut, icon, desc, func in actions: action = QAction(target) if icon: - action.setIcon(QIcon.fromTheme(icon)) + action.setIcon(icon) if shortcut: action.setShortcut(shortcut) action.setText(desc) @@ -48,28 +49,32 @@ class ViewerToolBar(QToolBar): ( "actionZoomIn", QKeySequence.ZoomIn, - "zoom-in", + QIcon.fromTheme("zoom-in") if ISLINUX + else QIcon(QPixmap(":/" + "zoom_in")), tr("Increase zoom"), controller.zoomIn, ), ( "actionZoomOut", QKeySequence.ZoomOut, - "zoom-out", + QIcon.fromTheme("zoom-out") if ISLINUX + else QIcon(QPixmap(":/" + "zoom_out")), tr("Decrease zoom"), controller.zoomOut, ), ( "actionNormalSize", tr("Ctrl+/"), - "zoom-original", + QIcon.fromTheme("zoom-original") if ISLINUX + else QIcon(QPixmap(":/" + "zoom_original")), tr("Normal size"), controller.zoomNormalSize, ), ( "actionBestFit", tr("Ctrl+*"), - "zoom-best-fit", + QIcon.fromTheme("zoom-best-fit") if ISLINUX + else QIcon(QPixmap(":/" + "zoom_best_fit")), tr("Best fit"), controller.zoomBestFit, ) @@ -83,7 +88,9 @@ class ViewerToolBar(QToolBar): self.buttonImgSwap.setToolButtonStyle(Qt.ToolButtonIconOnly) self.buttonImgSwap.setIcon( QIcon.fromTheme('view-refresh', - self.style().standardIcon(QStyle.SP_BrowserReload))) + self.style().standardIcon(QStyle.SP_BrowserReload)) + if ISLINUX + else QIcon(QPixmap(":/" + "exchange"))) self.buttonImgSwap.setText('Swap images') self.buttonImgSwap.setToolTip('Swap images') self.buttonImgSwap.pressed.connect(self.controller.swapImages)