Files
anonymisation/tools/test_gui_stop_button.md

3.2 KiB

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)

    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)

    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)

    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)

    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)

    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