On 09/26/2014 10:35 PM, Olivier Dalang wrote:

While on the topic of map tools, I was thinking of the following improvements to the QgsMapTool class:

*1. Implement snapping directly in the QgsMapTool class rather than in each subclass* From what I understand of the source, currently, more or less every subclass of QgsMapTools provides it's own logic for snapping (or more generally: for conversion from pixel coordinates click to map coordinates click). In this context, I don't see how we can achieve cleanly a cross-tool numerical input system.

I am not sure exactly what you mean, the snapping is mostly done by a QgsMapCanvasSnapper object, by calling snapToBackgroundLayers that will take a point and return snapping results. I am not sure numerical input system is linked to snapping as when you enter a numerical value for a position, you expect to go exactly to this position, not snap the value to a nearby node.

*2. Implement pre-click highlighting of features/nodes/edges/rings/... (depending on what the current tool accepts)* This type of visual feedback will make editing much more intuitive. Take the "move node" tool. It's only by mistake that user can learn that it also acts on edges. Take the move tool : when two features overlap, you have no idea on which feature you'll act. Etc. This could also be done directly in QgsMapTool, so that we are sure it's consistent across tools.

Pre-click highlighting would require rubberband display on onMouseMove events, right ? I tried something similar when I modified the remove part tool, it had awful performance.

Now that I think of it, I saw a trick for webdev where they use timers to limit the number of mouse move events fired, it may be worth a try.

Leyan

_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to