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.QtGui import QDrag, QPixmap
from PySide6.QtWidgets import QListWidget, QListWidgetItem, QMessageBox, QProgressDialog
from PySide6.QtWidgets import (
QApplication,
QListWidget,
QListWidgetItem,
QMessageBox,
QProgressDialog,
)
class SamplesListWidget(QListWidget):
@ -19,12 +25,19 @@ class SamplesListWidget(QListWidget):
self.setDragEnabled(True)
self.setSelectionMode(QListWidget.SelectionMode.MultiSelection)
def setSamples(self, samples: list[Path]):
def setSamples(self, samples: list[Path], *, cancellable: bool = True):
self.clear()
samplesNum = len(samples)
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)
if not cancellable:
progressDialog.setCancelButton(None)
progressDialog.show()
QApplication.processEvents()
for i, sample in enumerate(samples):
item = QListWidgetItem(QPixmap(str(sample)), f"{sample.stem[:3]}...", self)
@ -45,9 +58,10 @@ class SamplesListWidget(QListWidget):
break
progressDialog.setValue(samplesNum)
QMessageBox.information(
self, None, f"Loaded {self.model().rowCount()} samples."
)
if i + 1 != samplesNum:
QMessageBox.information(
self, None, f"Loaded {self.model().rowCount()} samples."
)
def startDrag(self, supportedActions: Qt.DropAction):
drag = QDrag(self)