← Back to team overview

kicad-developers team mailing list archive

Re: Layers visibility


Gabriele Oberhammer wrote:
Fist of all I apologize for the late reply, I was on vacation till today
and so you will forgive me if I'm still in brainstorm-mode.

I red all the replays and comments and I think they are all useful.

Ok, let me summarize:

- everyone agrees that Kicad needs a more powerful and modeless(floating) layer properties editor (from now on called *LPE*)
- this will suffice to power users and/or users with dual head configurations, but
- will be unfriendly to users with small screen and to new users

No, because the screen real-estate for this feature is not necessarily permanently reserved. One icon on a tool bar can bring a modeless dialog or large floating toolbar to the top, and then clicking on the main PCBNEW frame or drawing can put the modeless dialog (large floating toolbar) into the back of the stack. At least the main frame can be put in front of it with this action. So the screen real estate is then available for use by the small screen user. Summarizing concept: a modeless dialog or large floating toolbar can be open but not on top, and clicking a Desktop GUI toolbar button or a Kicad toolbar icon can bring the dialog or floating toolbar to the top.

I like your idea of the larger toolbar with the additional color box. It shows the layer names and has great potential. From there you can provide a path to a layer specific dialog window at which point you can offer layer naming on the chosen layer (only) and if one of the 16 or so copper layers, what type of layer it is.

In such a drill down, layer specific dialog, we have to decide what can be allowed for non-copper layers. There currently is no provision in the board file for layer names other than copper layers. However, I am not fond of "copper" and "component" as layer name elements. See I have already used "copper" for two distinctly different purposes in this paragraph.

Maybe we take the name the user assigns to the copper layer, and the name the user assigns to the component layer, and simply automatically append hard coded suffixes onto the end of them. In my case I would have a "front" layer and "back" layer for my component and copper layers. Front and back are what the Specctra DSN spec uses. I like them. They tell me something. So then I would automatically get front-silkscreen, front-soldermask, etc.

So when a user pulls up the drill down, layer specific dialog window, (from the large floating toolbar) he cannot edit the layer name for any layer that is not a copper layer, nor set the layer type field, but only change the color. The other controls in that dialog for that layer type could be there but disabled. This dialog should not come over the large floating toolbar, but off to the side, so that the user can see what colors other layers are using. Which brings me to my last idea, perhaps your floating toolbar should have a tab, one for copper layers, and one for technical layers. Then below you can put any common buttons, like say a help button or a close button.


- so a second and simpler interface (from which the LPE can be displayed) is advisable
- this could be an enhanced version of the current drop down selection box (let's call it *EDD*) with layers properties managed by clickable icons (like proposed by Wayne)
- or a new (microwave like) layers toolbar (let's call it *LT*).
For the LT, two layouts are possible (or better, two were proposed):
one really thin with small one-letter buttons, with properties encoded with colors
and/or different borders width, like the one proposed by Werner:
and one with large buttons with layers name like proposed by me:
Both will have a right-click popup menu with advanced options which could be all the options available in the LPE or a subset of them.

Please fell free to correct/enhance/be-upset-with this, because I surely missed something.

Now some considerations:

I like the EDD solutions but I think this approach will have two shortcomings:
- you always need +1 click for every action
- the dropdown box will (even more than now) cover the PCB area, so the advantage of hiding a layer to better see a label will be voided if the drop down covers the area of interest. (Maybe it is possible to minimize this by placing the dropdown on the rightmost possible position of the windows.)

It could be tempting to use wxAUI to make the LPE dockable, but I think this not feasible
because there isn't an easy way to use a single, floating and dockable window with at the same time a thin layout and all the options of a modless advanced option dialog. Developing two separate interfaces (EDD/LT and LPE) to set the layers properties has several advantages: - we will make happy the power user with a dual head configuration and also the non-power user (like me) with a single display - implementing a alternative really thin version of the LT (like suggested by Werner) will make netbook users happy too :-) (and this thin version would be easy to rotate like an horizontal toolbar if someones needs it that way) - the development of the two interfaces can go ahead in an independent way because all proprieties modified by the two interfaces are global properties, so there is no risk of being out of sync because the two interfaces are dynamically generated from this global properties set. (Please tell me if I'm wrong presuming this) The only thing to assure is that when one interface is displayed, the other is hidden. But I guess this is acceptable because there will be no need to use them at the same time.

I think everything discussed here is independent of wxAUI and the (cool) proof of concepts Marco has recently implemented.

Speaking about coding, even if I'm new to Kicad development I'll be happy to code this.
I must say that I'll feel more comfortable with the LT way than the EDD way because I'm not much into custom drawn dropdown boxes. That said, there are a lot of examples out there and I think I could work it out. I'm mainly a C embedded developer, but I'm fine with C++. I've used wxWidgets with python and wxFormBuilder (witch xrc) in the past (firmware loader interfaces and a multiplatform serial terminal). I wrote a nice widget toolkit (not publicly available) for MCU with very small memory and its SDL based simulator for PC. I develop only on Linux (Ubuntu 9.04), using gVim and Code::Blocks, using wine for the various MCU ide (Fujitsu workbench, Keil uVison, etc) and Virtualbox+Xp when needed (sigh!)

Obviously, since I'm not a Kicad developer nor a power user, I'm the last person who can decide about this subjects. I only wish to help with a great project.
That said, this would be the path I'll follow in case:

1- complete the proposed LT adding a small colored box on the left which reflects the layer color. Add popup menus with advanced options like changing layers names and colors, etc (we can discuss the details on a separate thread)

2- develop the LPE, renewing the color dialog making it modeless and adding all the advanced functions of the LT popup menu or more

3- create an alternative version of the layer toolbar with very small buttons and a color code like suggested by Werner wich will be interchangeable with the large buttons one

I think I can start with 1, but for 2 and 3 we need more discussing.
(for example: is it worth to modify the current layer colors dialog or is better to develop a new one with wxFormBuilder? In that case, is wxFormBuilder suitable? Bacuse as far ad I can see, the current dialog is dynamically generated and using wxFormBuilder will force us to set the number of buttons/layers/options... Or not?

Ciao, Gabriele.


Yahoo! Groups Links

Follow ups