Hi,

See https://josm.openstreetmap.de/ticket/11904.
What is the recommended way to add a command history with undo/redo functionality to a layer that is not an OSM data layer? In this case the GeoImageLayer.

The other software I know has one history stack. Every modification generates a history entry. JOSM default is to have history only for OSM data layers. The Mapillary plugin implements a history as toggle dialog with separate undo/redo buttons.

I can imagine three options:
1) One linear history stack for all actions with one interface. This is what is usually done in other software. The interface is the undo/redo in the edit menu and the main toolbar and the command stack toggle dialog.

2) One history stack per layer with one interface. Similar to 1), but undo/redo applies only to the active layer. This decouples the actions done in different layers. It requires that actions done in one layer do not depend on actions in another layer. "Layer" can either be a single layer or one layer type.

3) Each layer implements a custom history. Similar to 2), but different interface for each layer. Has the advantage that fancy things can be done. E.g. for the GeoImageLayer the history could be per image. But the user is confronted with many history dialogs and undo mechanisms.

To be useful the history needs a concept of "connected actions" and the possibility to undo unconnected actions independently. Example: The key "opening_hours" is added to a POI node, then the key "name" of an other PI node is changed. To undo the opening_hours the name change has to undone too with the current implementation. But the two POI nodes are not connected, it should be possible to undo either change.

Regards,
Holger

_______________________________________________
josm-dev mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/josm-dev

Reply via email to