kicad-developers team mailing list archive
Mailing list archive
Re: Layers visibility
Dick Hollenbeck <dick@...>
Sun, 07 Jun 2009 19:53:15 -0500
Thunderbird 184.108.40.206 (X11/20090318)
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
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
- 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?
Yahoo! Groups Links