<div dir="ltr">Hi all, <div><br></div><div>one major drawback of QGIS has long been that labeling was considered as part of the datasources, which can be true in some cases, but often it more belong to a project map object</div><div><br></div><div>We, at Oslandia, working on adding Auxiliary storage capabilities to QGIS, which was discussed in several QEP [1] before.</div><div><br></div><div>Now we are close to merge but the work but I would like to discuss some ergonomics and design polishing. </div><div><br></div><div>In all GIS tool, custom labeling informations have been stored in project file, except in QGIS (which was a brilliant idea to keep it simple !). </div><div><br></div><div><div>A user will now have two ways of storing labeling data :</div><div> - In the datasource by manually adding the fields and setting the corresponding labeling widget. Only advanced users, with grants on the datasource do that</div><div>-  Using an auxiliary data source sqlite db stored inside the project, just directly using the labeling toolbar, even on readonly layers. 90 % of the users will use that I think. </div></div><div><br></div><div>If we consider that a label modification (location, style, rotation ...) belongs to a project, then we save it when a user saves the project. </div><div>If we consider it is belonging to the data, we save it with data save button. </div><div>Rollback for data edits exists using the edit buffer. </div><div>But Rolling back project modifications exists only partially, in composer's edit command list or in dynamic styling panel. </div><div><br></div><div><br></div><div>Our concern is about how to handle and display the undo/redo actions for labeling when they are stored inside the project file. </div><div><br></div><div><br></div><div>We thought about 4  ways before concluding that:</div><div>- merge the labeling command in the source layer's edit buffer stack -> that won't work if the layer is readonly. If a user chose not to use the auxiliary data, then it will work like normal editing. </div><div>- add separate buttons to save auxiliary data by hand (which is the same action as saving a project in fact). Tollbars are too cluttered and users are already confusing data and project save buttons. </div><div>- Create a global "project" or maybe "mapcanvas" level stack, but I suspect users would like to be able to rollback style, composer and labeling independently, when undoing some labeling action could also remove some layers or important styling things. </div><div>- Finally, we decided to add a separate edit buffer for the auxiliary data inside the dynamic styling panel, just below the style/label edit buffer. </div><div><br></div><div>So  has anyone any strong opinion here? </div><div><br></div><div>Is there any plan somewhere for a Project Undo/Redo, allowing for instance to Cancel a layer deletion ? </div><div><br></div><div>If yes, please share your thoughts so that we store each undo/redo stack at the right place, and hopefully with something users will understand easily.</div><div><br></div><div>All the best, </div><div>Régis </div><div><br></div><div> [1] <a href="https://github.com/qgis/QGIS-Enhancement-Proposals/issues/27">https://github.com/qgis/QGIS-Enhancement-Proposals/issues/27</a><br></div></div>