kicad-developers team mailing list archive
Mailing list archive
Re: Development Tasks.... GUI Standards?
Wayne Stambaugh <stambaughw@...>
Wed, 28 Oct 2009 21:33:09 -0400
Thunderbird 188.8.131.52 (Windows/20090812)
Rob Frohne wrote:
Hi Dick, J.P., Wayne, et. al.,
I'm most interested in some changes (hopefully improvements) in the area
of adherence to GUI standards, especially ones that will allow my
students to more quickly and easily learn Kicad, with less frustration.
I'm still reading the code and learning the program myself, so I'm not
going to get any many changes done quickly, but I have interest.
The first thing I would like to do is make the select code work better.
Presently you need to select a block by drawing a rectangle around the
components you want include. Often, I find myself getting more
components than I wanted because I am cramming a lot onto a one page
schematic diagram, so that I don't have to flip back and forth to see
everything. If the set of components in your desired block aren't in a
rectangular shape and with the correct orientation, it means you have to
do operations with smaller blocks which is more effort and time. I
propose that when you single click on a component, it becomes selected
(and highlighted). You could then control click on another component
and it would be added into the selection block. If you got a component
you didn't want you could control click on it and it would be removed
from the selection block. (On OS X, you would use the command key
instead of the control key.) The present method with dragging a
rectangular selection area would also be allowed for adding or removing
items from the selection block. I think this should work okay, because
presently single clicking on a component just prints its information in
the status bar, but nothing else I could detect.
Additionally, with this more traditional selection paradigm, the
traditional copy and paste methods could be used, and learners would
benefit from their previous experience with other applications that use
this standard paradigm.
There are other areas that need this kind of attention, and it appears
that Wayne and J.P. in particular are working on some of them.
The project could always use more help. It's the attention to details
that will help make Kicad a more polished and accepted application.
This low level attention to detail work may not be the most glamorous
thing to do but it often has more impact than the latest feature.
All the above would help make Kicad more like other computer
applications, and so much easier and quicker to learn. More users means
more contributers to parts libraries, and to the code.
Is this the right direction to go?
It sounds useful but it will probably be a fairly involved change to
make. The mouse event logic is pretty complicated. Take a look at the
OnMouseEvent() method in common/drawpanel.cpp. If you could factor out
some of the logic just for handling blocks and/or item selection without
breaking everything else, that would be even better. Take a look at the
OnMouseWheel() method for an example of what I am talking about. At one
time all of that code was also in OnMouseEvent(). Learning everything
you can about the wxWidgets event handling will be helpful in dealing
Thanks for your thoughts!
P.S. If others of you who are more up to speed on this want to work on
this area, by all means do! Like I said, it will take me a good while
before I'm up to speed.
Take your time. I probably played around for about a year before I was
comfortable with the code base to join the project. Kicad is fairly
large project. The better you understand how it works, the more likely
you will be able to successfully contribute to the project.