diff --git a/ui/components/blockLabelDialog.py b/ui/components/blockLabelDialog.py
new file mode 100644
index 0000000..916b96e
--- /dev/null
+++ b/ui/components/blockLabelDialog.py
@@ -0,0 +1,38 @@
+from PySide6.QtCore import Qt
+from PySide6.QtWidgets import QApplication, QLabel
+
+
+class BlockLabelDialog(QLabel):
+ def __init__(
+ self,
+ parent=None,
+ modality: Qt.WindowModality = Qt.WindowModality.ApplicationModal,
+ *,
+ autoShow: bool = False
+ ):
+ super().__init__(parent)
+
+ self.setWindowFlag(Qt.WindowType.Dialog, True)
+ self.setWindowFlag(Qt.WindowType.WindowMinimizeButtonHint, False)
+ self.setWindowFlag(Qt.WindowType.WindowMaximizeButtonHint, False)
+ self.setWindowFlag(Qt.WindowType.WindowCloseButtonHint, False)
+ self.setWindowModality(modality)
+ self.setWindowTitle("Please Wait")
+ self.setMinimumWidth(200)
+ self.setMargin(20)
+ self.setAlignment(Qt.AlignmentFlag.AlignCenter)
+
+ self.autoShow = autoShow
+
+ def show(self):
+ super().show()
+ QApplication.processEvents()
+
+ def __enter__(self):
+ if self.autoShow:
+ self.show()
+ return self
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ self.close()
+ self.deleteLater()
diff --git a/ui/components/projectEntry_Classify.py b/ui/components/projectEntry_Classify.py
index 341a1a5..6647c60 100644
--- a/ui/components/projectEntry_Classify.py
+++ b/ui/components/projectEntry_Classify.py
@@ -7,6 +7,7 @@ from PySide6.QtWidgets import QLabel, QWidget
from project import Project
+from .blockLabelDialog import BlockLabelDialog
from .projectEntry_Classify_ui import Ui_ProjectEntry_Classify
@@ -89,4 +90,8 @@ class ProjectEntry_Classify(Ui_ProjectEntry_Classify, QWidget):
@Slot()
def on_loadSamplesButton_clicked(self):
- self.samplesListWidget.setSamples(self.project.samplesUnclassified)
+ with BlockLabelDialog(self) as block:
+ block.setText(f"{self.project.name}
Loading unclassified samples")
+ block.show()
+
+ self.samplesListWidget.setSamples(self.project.samplesUnclassified)
diff --git a/ui/components/projectEntry_Manage.py b/ui/components/projectEntry_Manage.py
index 09c02af..8d14aa8 100644
--- a/ui/components/projectEntry_Manage.py
+++ b/ui/components/projectEntry_Manage.py
@@ -1,8 +1,9 @@
from PySide6.QtCore import Qt, Signal, Slot
-from PySide6.QtWidgets import QApplication, QLabel, QWidget
+from PySide6.QtWidgets import QApplication, QWidget
from project import Project
+from .blockLabelDialog import BlockLabelDialog
from .projectEntry_Manage_ui import Ui_ProjectEntry_Manage
from .yieldProgress import YieldProgress
@@ -26,31 +27,24 @@ class ProjectEntry_Manage(Ui_ProjectEntry_Manage, QWidget):
self.projectDescriptionLabel.setText("-")
return
- blockLabel = QLabel(self)
- blockLabel.setWindowModality(Qt.WindowModality.ApplicationModal)
- blockLabel.setWindowFlag(Qt.WindowType.Dialog, True)
- blockLabel.setWindowFlag(Qt.WindowType.WindowMinimizeButtonHint, False)
- blockLabel.setWindowFlag(Qt.WindowType.WindowMaximizeButtonHint, False)
- blockLabel.setAlignment(Qt.AlignmentFlag.AlignCenter)
- blockLabel.setText(f"Loading project
{self.project.name}")
- blockLabel.setMargin(20)
- blockLabel.show()
- QApplication.processEvents()
- self.projectNameLabel.setText(self.project.name)
- self.projectDescriptionLabel.setText(
- "
".join(
- [
- str(self.project.path.resolve()),
- f"{len(self.project.sources)} sources",
- f"{len(self.project.samples)} samples",
- f"- {len(self.project.samplesClassified)} classified",
- f"- {len(self.project.samplesIgnored)} ignored",
- f"- {len(self.project.samplesUnclassified)} unclassified",
- ]
+ with BlockLabelDialog(self) as block:
+ block.setText(f"{self.project.name}
Updating status")
+ block.show()
+
+ QApplication.processEvents()
+ self.projectNameLabel.setText(self.project.name)
+ self.projectDescriptionLabel.setText(
+ "
".join(
+ [
+ str(self.project.path.resolve()),
+ f"{len(self.project.sources)} sources",
+ f"{len(self.project.samples)} samples",
+ f"- {len(self.project.samplesClassified)} classified",
+ f"- {len(self.project.samplesIgnored)} ignored",
+ f"- {len(self.project.samplesUnclassified)} unclassified",
+ ]
+ )
)
- )
- blockLabel.close()
- blockLabel.deleteLater()
@Slot()
def on_updateButton_clicked(self):