Skip to content
Snippets Groups Projects
Commit 8e43c102 authored by Jan Frederick Eick's avatar Jan Frederick Eick
Browse files

ADD image preview for file selection dialog

parent ef7f0d4a
No related branches found
No related tags found
No related merge requests found
from preview import QFileDialogPreview
import base64
import importlib.util
import os
......@@ -17,6 +18,7 @@ from matplotlib.figure import Figure
import tool_widget
MAINWINDOW, _ = uic.loadUiType('crack_util.ui')
SETTINGS_IMAGE_PATH = 'settings/image_path'
......@@ -173,10 +175,16 @@ class CrackUtility(QtWidgets.QMainWindow, MAINWINDOW):
def open_image(self):
last_path = self.settings.value(SETTINGS_IMAGE_PATH, '', type=str)
file_name, pattern = QtWidgets.QFileDialog.getOpenFileName(
self, 'Open image', last_path,
"Image files (*.jpg *.jpeg *.png *.JPG);;All files (*)")
if file_name == '':
#file_name, pattern = QtWidgets.QFileDialog.getOpenFileName(
# self, 'Open image', last_path,
# "Image files (*.jpg *.jpeg *.png *.JPG);;All files (*)")
file_dialog = QFileDialogPreview(self, 'Open image', last_path,
"Image Files (*.png *.jpg *.jpeg *.bmp *.tif);;All files (*)")
file_dialog.setAcceptMode(QtWidgets.QFileDialog.AcceptOpen)
file_dialog.exec()
file_name = file_dialog.getFileSelected()
if file_name is None or file_name == '':
print("No file selected")
return
self.settings.setValue(SETTINGS_IMAGE_PATH, os.path.dirname(file_name))
self.settings.sync()
......
from PyQt5 import QtCore, QtWidgets, QtGui
class QFileDialogPreview(QtWidgets.QFileDialog):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, True)
box = QtWidgets.QVBoxLayout()
self.setFixedSize(self.width() + 350, self.height())
self.mpPreview = QtWidgets.QLabel("Preview", self)
self.mpPreview.setFixedSize(350, 250)
self.mpPreview.setAlignment(QtCore.Qt.AlignCenter)
self.mpPreview.setObjectName("labelPreview")
box.addWidget(self.mpPreview)
box.addStretch()
self.layout().addLayout(box, 1, 3, 1, 1)
self.currentChanged.connect(self.onChange)
self.fileSelected.connect(self.onFileSelected)
self.filesSelected.connect(self.onFilesSelected)
self._fileSelected = None
self._filesSelected = None
def onChange(self, path):
pixmap = QtGui.QPixmap(path)
if pixmap.isNull():
self.mpPreview.setText("Preview")
else:
self.mpPreview.setPixmap(pixmap.scaled(self.mpPreview.width(),
self.mpPreview.height(),
QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation))
def onFileSelected(self, file):
self._fileSelected = file
def onFilesSelected(self, files):
self._filesSelected = files
def getFileSelected(self):
return self._fileSelected
def getFilesSelected(self):
return self._filesSelected
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment