Guide d'utilisateur du GUI

This commit is contained in:
sebastien committed 2026-09-29 15:21:15 +02:00
1 parent a56fc6e680
commit 5b7d4b611e
4 files changed
+49

No files matched your search

+2
View File
@@ -198,6 +198,8 @@ ou
* Documentation complémentaire
- [[file:docs/guide_utilisateur_gui.md][Guide utilisateur de l’interface graphique]] : actions,
vérifications et cas particuliers pour chaque étape du parcours non personnel.
- [[file:Script.org][Référence des étapes et des scripts]] : commandes, arguments,
prérequis, fichiers produits et parcours alternatifs.
- [[file:docs/final_output.md][Fichiers finaux dans A Rendre]] : contenu du JPEG, sélection et
+25
View File
@@ -279,6 +279,7 @@ class CopienatorApp(tk.Tk):
self.refaire_panel: RefaireSelection | None = None
self.giving_names_panel: GivingNamesPanel | None = None
self.complete_giving_names_button: ttk.Button | None = None
self.label_groups_button: ttk.Button | None = None
self.pending_refaire_commands: list[list[str]] = []
self.refaire_command_index = 0
self._correction_progress_buffer = ""
@@ -833,6 +834,7 @@ class CopienatorApp(tk.Tk):
self.refaire_panel = None
self.giving_names_panel = None
self.complete_giving_names_button = None
self.label_groups_button = None
entry = self.state_store.step(step.id) if self.state_store.evaluation else {}
saved_variant = entry.get("variant", step.variants[0].id)
if saved_variant not in {variant.id for variant in step.variants}:
@@ -946,6 +948,22 @@ class CopienatorApp(tk.Tk):
self._update_controls()
def _render_context_controls(self, step: StepDefinition, row: int) -> int:
if step.id == "annotation" and self.variant_var.get() == "grouped":
controls = ttk.Frame(self.form)
controls.grid(row=row, column=0, columnspan=2, sticky="ew", pady=(0, 8))
self.label_groups_button = ttk.Button(
controls,
text="Ouvrir les groupes de questions",
command=self._open_label_groups,
)
self.label_groups_button.pack(side="left")
ttk.Label(
controls,
text="Une ligne = un groupe. Vérifiez et enregistrez le fichier avant d’exécuter BGnot.",
wraplength=470,
justify="left",
).pack(side="left", padx=(10, 0))
return row + 1
if step.id == "personal_read":
controls = ttk.Frame(self.form)
controls.grid(row=row, column=0, columnspan=2, sticky="w", pady=8)
@@ -1208,6 +1226,13 @@ class CopienatorApp(tk.Tk):
evaluation = self.evaluation
self._open_desktop_path(evaluation / "Persp" if evaluation else None, "dossier Persp")
def _open_label_groups(self) -> None:
evaluation = self.evaluation
self._open_desktop_path(
evaluation / "label_groups" if evaluation else None,
"fichier label_groups",
)
def _open_selected_copy(self) -> None:
self._open_desktop_path(self.copy_paths.get(self.copy_var.get()), "copie")
+3
View File
@@ -17,6 +17,9 @@ if [[ $# -eq 0 ]]; then
folder="${candidate%/}"
folder="${folder##*/}"
case "$folder" in
[Ee]xample|[Ee]xamples|[Dd]oc|[Dd]ocs|[Dd]ocumentation)
continue
;;
copienator|copienator_gui|tests|OLD|__pycache__|build|dist|*.egg-info|venv|env|node_modules)
continue
;;
+19
View File
@@ -210,6 +210,25 @@ class GuiConvenienceTests(unittest.TestCase):
)
self.assertNotEqual(self.app.current_step.id, "giving_names")
def test_grouped_annotation_can_open_label_groups(self):
label_groups = self.evaluation / "label_groups"
label_groups.write_text("Ex 1 : 1), Ex 1 : 2)\n", encoding="utf-8")
self.app.state_store.update_step("annotation", variant="grouped")
self.app.tree.selection_set("annotation")
self.app.update()
self.assertIsNotNone(self.app.label_groups_button)
self.assertEqual(
self.app.label_groups_button.cget("text"),
"Ouvrir les groupes de questions",
)
with patch("copienator_gui.app.open_path") as opened:
self.app.label_groups_button.invoke()
opened.assert_called_once_with(label_groups)
self.app._select_variant(0)
self.assertIsNone(self.app.label_groups_button)
def test_batch_status_waits_until_all_jobs_are_ready(self):
self.app.state_store.update_step("correction", variant="batch", last_run_variant="batch")
self.app._populate_tree()