impr: better dialog when loading samples

This commit is contained in:
283375 2023-09-24 01:42:59 +08:00
parent 5a5b0887c3
commit 01b8b2e26c
Signed by: 283375
SSH Key Fingerprint: SHA256:UcX0qg6ZOSDOeieKPGokA5h7soykG61nz2uxuQgVLSk
2 changed files with 19 additions and 11 deletions

View File

@ -1,6 +0,0 @@
from PySide6.QtWidgets import QListWidget
class SamplesListWidget(QListWidget):
def __init__(self, parent=None):
super().__init__(parent)

View File

@ -3,7 +3,13 @@ from pathlib import Path
from PySide6.QtCore import QByteArray, QMimeData, Qt from PySide6.QtCore import QByteArray, QMimeData, Qt
from PySide6.QtGui import QDrag, QPixmap from PySide6.QtGui import QDrag, QPixmap
from PySide6.QtWidgets import QListWidget, QListWidgetItem, QMessageBox, QProgressDialog from PySide6.QtWidgets import (
QApplication,
QListWidget,
QListWidgetItem,
QMessageBox,
QProgressDialog,
)
class SamplesListWidget(QListWidget): class SamplesListWidget(QListWidget):
@ -19,12 +25,19 @@ class SamplesListWidget(QListWidget):
self.setDragEnabled(True) self.setDragEnabled(True)
self.setSelectionMode(QListWidget.SelectionMode.MultiSelection) self.setSelectionMode(QListWidget.SelectionMode.MultiSelection)
def setSamples(self, samples: list[Path]): def setSamples(self, samples: list[Path], *, cancellable: bool = True):
self.clear() self.clear()
samplesNum = len(samples) samplesNum = len(samples)
progressDialog = QProgressDialog("", "Abort", 0, samplesNum, self) progressDialog = QProgressDialog("", "Abort", 0, samplesNum, self)
progressDialog.setWindowFlag(Qt.WindowType.WindowMinimizeButtonHint, False)
progressDialog.setWindowFlag(Qt.WindowType.WindowMaximizeButtonHint, False)
progressDialog.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False)
progressDialog.setWindowModality(Qt.WindowModality.ApplicationModal) progressDialog.setWindowModality(Qt.WindowModality.ApplicationModal)
if not cancellable:
progressDialog.setCancelButton(None)
progressDialog.show()
QApplication.processEvents()
for i, sample in enumerate(samples): for i, sample in enumerate(samples):
item = QListWidgetItem(QPixmap(str(sample)), f"{sample.stem[:3]}...", self) item = QListWidgetItem(QPixmap(str(sample)), f"{sample.stem[:3]}...", self)
@ -45,6 +58,7 @@ class SamplesListWidget(QListWidget):
break break
progressDialog.setValue(samplesNum) progressDialog.setValue(samplesNum)
if i + 1 != samplesNum:
QMessageBox.information( QMessageBox.information(
self, None, f"Loaded {self.model().rowCount()} samples." self, None, f"Loaded {self.model().rowCount()} samples."
) )