refactor(gui): intégrer le Masquage dans Administration > Profils
Retour Dom : le sous-onglet Masquage séparé créait de la confusion. Le masquage fait partie de la manière d'anonymiser associée au profil. - Retrait du sous-onglet « Administration > Masquage » (_SUBTABS, builder, méthode _build_masquage). - Section « Profils > Masquage » enrichie : masque manuel requis, template de masque (lié au profil édité), bouton « Ouvrir l'éditeur de masque » (fenêtre dédiée) + dossier des templates, et apparence du masque (couleur, style des marqueurs + aperçu, marges H/V, coins arrondis). - Le template enregistré depuis l'éditeur remplit désormais le champ Template du profil (preferred_manual_mask_template via _pro_template_var). - Profils devient le centre des réglages métier (général/masquage/mots/ moteurs/règles). Réglages inchangé (pas de pastilles, pas de grosse refonte). Nettoyage du code mort (_REPLACEMENT_CODES, _HELP_MASQUAGE). 261 tests unit OK (0 régression), self-test OK, nav 4 sous-onglets + éditeur de masque depuis Profils + thème OK. Préserve 72841ed/GO Qwen. Aucun build/ push sans GO Dom. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -251,3 +251,25 @@ def test_usage_tab_finish_calls_reporter(ctk_root):
|
||||
assert called.wait(timeout=3.0) # reporter appelé en thread daemon
|
||||
assert captured["summary"] is summary
|
||||
tab.destroy()
|
||||
|
||||
|
||||
def test_masquage_moved_into_profils(ctk_root, tmp_path, monkeypatch):
|
||||
"""Le sous-onglet Masquage est retiré ; son contenu utile est dans Profils."""
|
||||
from gui_v6.tabs import tab_config
|
||||
|
||||
keys = [k for k, _ in tab_config._SUBTABS]
|
||||
assert "msk" not in keys # plus de sous-onglet Masquage séparé
|
||||
|
||||
monkeypatch.setattr(tab_config, "_app_base_dir", lambda: tmp_path)
|
||||
tab = tab_config.ConfigTab(ctk_root)
|
||||
tab._show_sub("pro")
|
||||
tab.update_idletasks()
|
||||
|
||||
# apparence du masque relocalisée dans la section Profils > Masquage
|
||||
assert getattr(tab, "_swatch_buttons", None)
|
||||
# un template enregistré depuis l'éditeur remplit le champ Template du profil
|
||||
saved = tmp_path / "config" / "mask_templates" / "depuis_editeur.json"
|
||||
saved.parent.mkdir(parents=True, exist_ok=True)
|
||||
tab._on_mask_template_saved(saved)
|
||||
assert tab._pro_template_var.get().endswith("depuis_editeur.json")
|
||||
tab.destroy()
|
||||
|
||||
Reference in New Issue
Block a user