82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
import logging
|
|
from PySide6.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QFileDialog, QProgressBar
|
|
from PySide6.QtCore import QThreadPool
|
|
from PySide6.QtGui import QImage
|
|
|
|
from fixtracks.widgets.mergepreview import MergePreview
|
|
from fixtracks.utils.reader import PickleLoader
|
|
|
|
|
|
class PreviewDialog(QDialog):
|
|
def __init__(self, parent=None):
|
|
super().__init__(parent)
|
|
self._threadpool = QThreadPool(self)
|
|
self._df = None
|
|
self._reader = None
|
|
|
|
self.setWindowTitle("Merge Preview")
|
|
self._progress_bar = QProgressBar(self)
|
|
# self._progress_bar.setRange(0, 0) # Set the progress bar to be indeterminate
|
|
self._progress_bar.setValue(0)
|
|
|
|
self.merge_preview = MergePreview(parent=self)
|
|
self._opendataBtn = QPushButton("open data")
|
|
self._opendataBtn.clicked.connect(self.on_openData)
|
|
|
|
btn_box = QHBoxLayout()
|
|
btn_box.addWidget(self._opendataBtn)
|
|
|
|
layout = QVBoxLayout()
|
|
layout.addLayout(btn_box)
|
|
layout.addWidget(self.merge_preview)
|
|
layout.addWidget(self._progress_bar)
|
|
|
|
self.setLayout(layout)
|
|
|
|
def on_openData(self):
|
|
infile = None
|
|
imgfile = None
|
|
|
|
file_dialog = QFileDialog(self, "Select merged image")
|
|
file_dialog.setFileMode(QFileDialog.ExistingFile)
|
|
file_dialog.setNameFilters([
|
|
"Image Files (*.png *.jpg *.jpeg)",
|
|
"All Files (*)"
|
|
])
|
|
if file_dialog.exec():
|
|
imgfile = file_dialog.selectedFiles()[0]
|
|
if imgfile is not None:
|
|
img = QImage(imgfile)
|
|
self.merge_preview.setImage(img)
|
|
|
|
file_dialog = QFileDialog(self, "Select pickled DataFrame", "", "Pandas DataFrame (*.pkl)")
|
|
if file_dialog.exec():
|
|
infile = file_dialog.selectedFiles()[0]
|
|
if infile is not None:
|
|
self._progress_bar.setRange(0,0)
|
|
self._reader = PickleLoader(infile)
|
|
self._reader.signals.finished.connect(self._on_dataOpenend)
|
|
self._threadpool.start(self._reader)
|
|
|
|
def _on_dataOpenend(self, state):
|
|
self._progress_bar.setRange(0, 100)
|
|
self._progress_bar.setValue(0)
|
|
if state and self._reader is not None:
|
|
self._df = self._reader.data
|
|
self.merge_preview.setDataframe(self._df)
|
|
self._reader = None
|
|
|
|
|
|
|
|
def main():
|
|
from PySide6.QtWidgets import QApplication
|
|
import sys
|
|
app = QApplication(sys.argv)
|
|
dialog = PreviewDialog()
|
|
dialog.show()
|
|
sys.exit(app.exec())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=logging.INFO, force=True)
|
|
main() |