← Back to team overview

kicad-developers team mailing list archive

Re: Development Tasks.... GUI Standards?


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 with this.

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.