• Nouvelle étape, mise en place du #undo/redo pour l’#association_de_polygones. Je dis bien mise en place puisqu’il n’y a aucune trace de undo dans la fonction qui gère l’association.
    Comme toujours, je commence par quelques tests pour voir ce qui fonctionne ou ne fonctionne pas. Je remarque donc que les actions effectuées dans ce cas et qui n’ont aucun undo sont les « map » sur les « poline » et l’ajout de points pour le premier polygone ( qui représente le polygone fusionnés).
    À ce niveau là, deux choix s’offrent à moi. Soit j’ajoute un undo pour chacune de ces actions, soit j’applique « dissocier les polygones » au polygone résultant. Avec la deuxième solution, seuls les points ont été fusionnés dans le nouveau polygone. Si on attribue, par exemple, une couleur différente à chaque polygone, celles ci disparaissent en fusionnant mais ne reviennent pas en les dissociant. Le undo ne serait donc que partiel.
    Je commence donc avec l’autre solution. J’ajoute un undo pour les « poline.map » et un undo pour l’ajout de points à la forme finale. Je combine ça dans une seule action pour avoir en appuyant sur ctrl-z : recréer tous les polygones supprimés, supprimer tous les points ajoutés dans ma forme finale et restaurer les paramètres de départ, appliquer la transformation inverse à tous les polygones recréés.
    Jusque là, c’est parfait, j’ai un undo fonctionnel.
    Un autre problème se pause, je ne fait pas que un undo mais un undo/redo. Or le redo ne fonctionne pas.
    En effet, j’applique de nouveau mes « poline.map » mais je n’ajoute plus mes points pour les regrouper dans un seul polygone... Je pourrais simplement ré-appliquer « associer les polygones » mais je n’ai nul part dans mes undo enregistrés tous les polygones au même endroit et en ajoutant cette action, certaines autres actions enregistrées comme la suppression des polygones en trop ou l’application du poline.map se ferait deux fois. Décidément ce n’est pas la bonne solution.
    Je suis donc reparti pour créer plutôt une action spécifique pour l’association de polygones en utilisant autre chose qu’un simpleState pour enregistrer l’action.

    Plus de nouvelles bientôt