docs: Documentation du bouton Arrêter déjà implémenté dans le GUI
This commit is contained in:
92
tools/test_gui_stop_button.md
Normal file
92
tools/test_gui_stop_button.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# Test du Bouton "Arrêter" dans le GUI
|
||||||
|
|
||||||
|
## Fonctionnalité Implémentée
|
||||||
|
|
||||||
|
Le bouton "Arrêter le traitement" est **déjà implémenté** dans le GUI.
|
||||||
|
|
||||||
|
### Code Existant
|
||||||
|
|
||||||
|
1. **Bouton créé** (lignes 492-499 de `Pseudonymisation_Gui_V5.py`)
|
||||||
|
```python
|
||||||
|
self.btn_stop = tk.Button(
|
||||||
|
buttons_frame, text="Arrêter le traitement",
|
||||||
|
font=self._f_button, bg=CLR_RED, fg="white",
|
||||||
|
activebackground="#b91c1c", activeforeground="white",
|
||||||
|
relief=tk.FLAT, cursor="hand2", pady=10,
|
||||||
|
command=self._stop,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Méthode _stop()** (lignes 735-739)
|
||||||
|
```python
|
||||||
|
def _stop(self):
|
||||||
|
"""Demande l'arrêt du traitement en cours."""
|
||||||
|
self._stop_requested = True
|
||||||
|
self.btn_stop.config(state=tk.DISABLED, bg="#fca5a5", text="Arrêt en cours...")
|
||||||
|
self.status_var.set("Arrêt demandé, fin du document en cours...")
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Vérification dans le worker** (lignes 752-755)
|
||||||
|
```python
|
||||||
|
for i, pdf in enumerate(pdfs, start=1):
|
||||||
|
# Vérifier si l'arrêt a été demandé
|
||||||
|
if self._stop_requested:
|
||||||
|
self.queue.put(UiMessage(kind=MsgType.LOG, text=f"\n⚠️ Arrêt demandé par l'utilisateur"))
|
||||||
|
break
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Gestion des boutons au démarrage** (lignes 728-730)
|
||||||
|
```python
|
||||||
|
self._stop_requested = False
|
||||||
|
self.btn_run.pack_forget() # Masquer "Lancer"
|
||||||
|
self.btn_stop.pack(fill=tk.X) # Afficher "Arrêter"
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Restauration à la fin** (lignes 908-914)
|
||||||
|
```python
|
||||||
|
self.btn_stop.pack_forget() # Masquer "Arrêter"
|
||||||
|
self.btn_stop.config(state=tk.NORMAL, bg=CLR_RED, text="Arrêter le traitement")
|
||||||
|
self.btn_run.pack(fill=tk.X) # Réafficher "Lancer"
|
||||||
|
|
||||||
|
if self._stop_requested:
|
||||||
|
self.status_var.set(f"Interrompu : {msg.ok} traités, {msg.ko} erreurs.")
|
||||||
|
else:
|
||||||
|
self.status_var.set(f"Terminé : {msg.ok} OK, {msg.ko} erreurs.")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Comportement
|
||||||
|
|
||||||
|
### Pendant le traitement:
|
||||||
|
- ✅ Le bouton "Lancer la pseudonymisation" est masqué
|
||||||
|
- ✅ Le bouton "Arrêter le traitement" (rouge) est affiché
|
||||||
|
- ✅ Cliquer sur "Arrêter" désactive le bouton et affiche "Arrêt en cours..."
|
||||||
|
- ✅ Le traitement s'arrête après le document en cours (pas d'interruption brutale)
|
||||||
|
|
||||||
|
### Après l'arrêt:
|
||||||
|
- ✅ Le bouton "Arrêter" est masqué
|
||||||
|
- ✅ Le bouton "Lancer" est réaffiché
|
||||||
|
- ✅ Le statut indique "Interrompu : X traités, Y erreurs"
|
||||||
|
- ✅ Les résultats partiels sont affichés
|
||||||
|
|
||||||
|
## Test Manuel
|
||||||
|
|
||||||
|
1. Lancer le GUI: `python Pseudonymisation_Gui_V5.py`
|
||||||
|
2. Sélectionner un dossier avec plusieurs PDFs (ex: `/home/dom/Téléchargements`)
|
||||||
|
3. Cliquer sur "Lancer la pseudonymisation"
|
||||||
|
4. Observer que le bouton "Arrêter le traitement" apparaît
|
||||||
|
5. Cliquer sur "Arrêter le traitement"
|
||||||
|
6. Observer que:
|
||||||
|
- Le bouton devient grisé avec "Arrêt en cours..."
|
||||||
|
- Le traitement s'arrête après le document en cours
|
||||||
|
- Le statut affiche "Interrompu : X traités, Y erreurs"
|
||||||
|
- Le bouton "Lancer" réapparaît
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
✅ **Le bouton "Arrêter" est déjà complètement implémenté et fonctionnel.**
|
||||||
|
|
||||||
|
Aucune modification n'est nécessaire. Le code gère correctement:
|
||||||
|
- L'affichage/masquage des boutons
|
||||||
|
- L'arrêt gracieux du traitement (fin du document en cours)
|
||||||
|
- La restauration de l'interface après l'arrêt
|
||||||
|
- Les messages de statut appropriés
|
||||||
Reference in New Issue
Block a user