[classifier] show progress dialog while refreshing

This commit is contained in:
Jan Grewe 2025-02-18 09:18:58 +01:00
parent 2737fed192
commit ef6ff0d2b4

View File

@ -2,14 +2,13 @@ import logging
import numpy as np import numpy as np
from PySide6.QtWidgets import QWidget, QVBoxLayout, QTabWidget, QPushButton, QGraphicsView from PySide6.QtWidgets import QWidget, QVBoxLayout, QTabWidget, QPushButton, QGraphicsView
from PySide6.QtWidgets import QSpinBox, QProgressBar, QGridLayout, QLabel, QCheckBox from PySide6.QtWidgets import QSpinBox, QProgressBar, QGridLayout, QLabel, QCheckBox, QProgressDialog
from PySide6.QtCore import Signal, Slot, QRunnable, QObject, QThreadPool from PySide6.QtCore import Qt, Signal, Slot, QRunnable, QObject, QThreadPool
from PySide6.QtGui import QBrush, QColor from PySide6.QtGui import QBrush, QColor
import pyqtgraph as pg # needs to be imported after pyside to not import pyqt import pyqtgraph as pg # needs to be imported after pyside to not import pyqt
from fixtracks.utils.trackingdata import TrackingData from fixtracks.utils.trackingdata import TrackingData
from IPython import embed
class WorkerSignals(QObject): class WorkerSignals(QObject):
error = Signal(str) error = Signal(str)
running = Signal(bool) running = Signal(bool)
@ -327,7 +326,7 @@ class ConsistencyClassifier(QWidget):
self._proceedbtn = QPushButton("proceed") self._proceedbtn = QPushButton("proceed")
self._proceedbtn.clicked.connect(self.proceed) self._proceedbtn.clicked.connect(self.proceed)
self._proceedbtn.setEnabled(False) self._proceedbtn.setEnabled(False)
self._refreshbtn = QPushButton("refresh") self._refreshbtn = QPushButton("refresh")
self._refreshbtn.clicked.connect(self.refresh) self._refreshbtn.clicked.connect(self.refresh)
self._refreshbtn.setEnabled(True) self._refreshbtn.setEnabled(True)
@ -373,6 +372,11 @@ class ConsistencyClassifier(QWidget):
data : Trackingdata data : Trackingdata
The tracking data. The tracking data.
""" """
self._progressDialog = QProgressDialog("Updating...", "Cancel", 0, 0, self)
self._progressDialog.setWindowModality(Qt.WindowModal)
self._progressDialog.setMinimumDuration(0)
self._progressDialog.setValue(0)
self._progressDialog.show()
self._data = data self._data = data
self._all_pos = data.centerOfGravity() self._all_pos = data.centerOfGravity()
self._all_orientations = data.orientation() self._all_orientations = data.orientation()
@ -391,6 +395,7 @@ class ConsistencyClassifier(QWidget):
self._assignedlabel.setText("0") self._assignedlabel.setText("0")
self._errorlabel.setText("0") self._errorlabel.setText("0")
self._worker = None self._worker = None
self._progressDialog.close()
@Slot(float) @Slot(float)
def on_progress(self, value): def on_progress(self, value):
@ -470,6 +475,7 @@ class ClassifierWidget(QTabWidget):
def consistency_tracker(self): def consistency_tracker(self):
return self._consistency_tracker return self._consistency_tracker
@Slot()
def update(self): def update(self):
self.consistency_tracker.setData(self._data) self.consistency_tracker.setData(self._data)
@ -485,7 +491,6 @@ def as_dict(df):
def main(): def main():
test_size = False test_size = False
import pickle import pickle
from IPython import embed
from fixtracks.info import PACKAGE_ROOT from fixtracks.info import PACKAGE_ROOT
datafile = PACKAGE_ROOT / "data/merged_small.pkl" datafile = PACKAGE_ROOT / "data/merged_small.pkl"