kicad-developers team mailing list archive
Mailing list archive
Kicad Tool Framework
Thanks to Orson, Camille, Vesa and others we now have the cool and
lightning-fast GAL-driven graphics view in pcbnew. Now it's time to make
it do some real work, that means editing operations.
Since the GAL does not allow XOR rendering, some significant refactoring
of the editing tools' code will have to happen at some point. I took it
as an opportunity to propose a tiny library/framework/abstraction (pick
your favorite name) for the editing tools. Its main goals are:
- separate tool = separate class, contrary to the current state where
all tools reside in PCB_EDIT_FRAME event handlers. This would allow for
writing new tools without touching the frame code (which is quite
complex) and abstract tools into plugins.
- no "asynchronous" drawing. If a tool wants to draw something, it adds
it to a VIEW, and the VIEW makes sure it's displayed in correct order
and without damaging other parts of screen.
- eliminate static/global tool states.
- independence from the GUI toolkit and its quirks on different systems.
Tools get the events in world space that are already adjusted to what's
going on with the view (panning, scrolling, zoom, etc.)
- tools accessible from scripts
I wrote a slightly longer technical description and uploaded it to the
CERN project Wiki: http://www.ohwr.org/projects/cern-kicad/wiki/Kicad-tool.
There is a demo available (kicad-gal-orson branch), that shows a simple
selection tool (Go to Edit->Selection tool with the GAL view enabled).
It's not yet useful for any practical purposes and very unstable - It's
purpose is it just to show the overall idea and prepare ground for
Thanks in advance for your feedback,