← Back to team overview

kicad-developers team mailing list archive

eeschema object selection and block commands


Dear developers,
        I'm an electronic developer and I found in the Kicad project an
extremely interesting EDA suite. Even it is obvious that (in this
moment) it cannot compete in productivity with most important EDA
systems (e.g. Altium, OrCAD, PADS...), it is growing fast and it has the
power to be used in production environments proportionally to its
growth. It is probably the only industrial EDA application that is
multi-platform, open source, and released in a stable version.

It's about two years I'm trying to give my small contribute to this
project; we had a discussion about additional features some time ago,
and I was probably too enthusiast to identify and imagine a proper
implementation work flow for my ideas. The first time I saw the code I
was discouraged not only by the lack of comments and the French language
used to write the application, but also by the dirty folder structure,
file names, and function positions. This is pretty changed now, and the
code looks generally better.

I've tried to use Kicad in some of my projects. However I found tricky a
set of functionalities that needs to be improved. I see that the
community is working hard to correct and improve functions. But now I'm
trying to implement features that I found important for my job. This is
a quite difficult task, since the code is huge and it is the first time
I hope to be useful in a collaborative open source project (but I write
C++ code nearly everyday). I understand that code improvement (such as
structure clarification, doxification of comments and bug fixing) is
more important than adding new features now; however the new features
are needed to make the jump from a wonderful hobbist EDA suite to a
good, stable and productive capturing and PCB design software. I hope
that the bug fixing can be parallel to the feature addition.

The feature set I wish to implement is related to the way items are
selected in eeschema. This is now starting to get shape in my code, but
it is a complex task and needs to be discussed.
I'm preparing an introductory document to describe my implementation;
however basic functionalities are described below.
Before going on, I want to hear from you what you think about (I hope
I'm not wasting my time in features that are not needed at the moment
and/or that someone is building up better than me...). If you think it
is useful, it's a good idea to identify how this functions can be
inserted in the new code (conditional compilation inside the current
development version or new code branch; wait until the functions are
completed or step-by-step implementation...).

This is no more than a proposal: it should be stated that I am ready to
discuss on every single sentence I wrote (and I will write) and every
coding choice.

point and click selection: lines become highlighted (inverted color) and
ends are drawn as squares; other objects are drawn inverted
one click unselection: responding to command “ESC”, click on free area
and click over selected object. No redraw seems to be necessary (clean
toggle with color inversion)
CTRL+click, multiple object selection and unselection
dragged square selection. The selected elements are the ones returned by
PickItemsInBlock() function.
CTRL+dragged square selection, adds to the selected elements list the
picked elements
Answer to the CANC keyboard command

answer to every control key
OnRightClick for each picked item type (element or list of elements),
operations on the list of selected elemets
PickItemsInBlock() behavoir discussion, if not already modified
Drag selected items
Discussion on the way nets are dragged
Drag net ends and nodes

As you see, the job I've done is less than 1/10 of the whole, but it is
still something (As you'll see, there is not so much coding effort in my
implementation, less than 1k lines including headers and comments...).
If this is the right way, I'll continue hearing from your advices. You
can see a sample of the actual result at this link:

This feature set should solve and build basis for a set of bug fixing
and wish implementation, such as the following:
#593997  Selection improvement (and 3 connected wishes)
#594073 Highlight Nets

Hope to “hear” from you what you think about that.

L. Farina
This message was sent from Launchpad by
Lorenzo (https://launchpad.net/~lf-underscore)
using the "Contact this team" link on the KiCad Developers team page
For more information see

Follow ups