Supprime la couche de formes libres, déplace la navigation de page dans le panneau gauche
Build and deploy / test-python (push) Successful in 7m43s
Build and deploy / test-js (push) Successful in 57s
Build and deploy / lint-python (push) Successful in 5m29s
Build and deploy / lint-js (push) Failing after 1m16s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 5m42s

Formes libres (rectangle/cercle/triangle/trait) retirées de bout en
bout (bibliothèque, rendu, panneau Propriétés, grille d'accroche,
JS/CSS associés) — fonctionnalité non retenue.

La bande de vignettes visuelles des pages au-dessus du canevas est
remplacée par une section "Pages" dans le panneau de gauche (liste
simple : ajouter/renommer/réordonner (haut/bas)/supprimer), à la
place de l'ex-catégorie "Mise en page" de la bibliothèque. La route
document_edit ne rend plus qu'une seule page (celle affichée) au
chargement, au lieu de toutes les pages pour alimenter les anciennes
vignettes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-21 14:40:33 +02:00
co-authored by Claude Sonnet 5
parent 57c4de3d8a
commit 8dc4b35dcf
11 changed files with 220 additions and 597 deletions
@@ -11,7 +11,6 @@ from .mots_config import DEFAULT_MOTS_CONFIG
from .quiz_config import DEFAULT_QUIZ_CONFIG
from .scenario_config import DEFAULT_SCENARIO_CONFIG
SHAPE_KINDS = ("rectangle", "cercle", "triangle", "trait")
CONTENT_KINDS = ("titre", "paragraphe", "image", "bouton")
MINIGAME_KINDS = ("quiz", "association", "memory", "mots", "scenario", "zones")
@@ -19,17 +18,12 @@ MINIGAME_KINDS = ("quiz", "association", "memory", "mots", "scenario", "zones")
# moteur de layout au dépôt d'un élément à côté d'un autre) — absent de
# ELEMENT_LIBRARY, présent dans ELEMENT_KIND_LABELS pour l'affichage/debug.
ELEMENT_LIBRARY: dict[str, dict[str, Any]] = {
"mise_en_page": {"label": "Mise en page", "kinds": list(SHAPE_KINDS)},
"contenu": {"label": "Contenu", "kinds": list(CONTENT_KINDS)},
"minigames": {"label": "Mini-jeux", "kinds": list(MINIGAME_KINDS)},
}
ELEMENT_KIND_LABELS: dict[str, str] = {
"row": "Rangée",
"rectangle": "Rectangle",
"cercle": "Cercle",
"triangle": "Triangle",
"trait": "Trait",
"titre": "Titre",
"paragraphe": "Paragraphe",
"image": "Image",
@@ -42,19 +36,6 @@ ELEMENT_KIND_LABELS: dict[str, str] = {
"zones": "Zones à risque",
}
_SHAPE_DEFAULTS = {
"x": 40,
"y": 40,
"width": 160,
"height": 100,
"rotation": 0,
"z_index": 1,
"fill": "#ff5f2e",
"stroke": "#232a38",
"stroke_width": 2,
"label": "",
}
_TEXT_DEFAULTS = {
"bold": False,
"italic": False,
@@ -68,8 +49,6 @@ def element_default_attributes(kind: str) -> dict[str, Any]:
"""Attributs posés à la création d'un élément de ce type — cf.
docs/plan/PLAN.md §3.3/§3.4/§3.5 pour la liste des propriétés
éditables par panneau, ici juste leur valeur de départ."""
if kind in SHAPE_KINDS:
return dict(_SHAPE_DEFAULTS)
if kind == "titre":
return {"content": "Nouveau titre", "style": "titre1", **_TEXT_DEFAULTS}
if kind == "paragraphe":