I've been learning the code base and testing out new ideas, and it
looks like I'll have to change the base HID code to support layer
groups. So there's some more design work to run by you guys before
I can do any "real" work:
My vision is this: the current drawing area will become a tabbed drawing
area, with each tab a different Group. Each Group is a logically connected
subset of the PCB - so for example, you might have a power supply Group,
a USB port Group, an amplifier Group, etc.
Each Group can span multiple physical layers.
The first Group is the "All" Group, that encompasses the entire PCB. It
cannot be deleted. This simplifies the design and also means that if you
don't use the Grouping feature at all, your workflow will be exactly the
same as it always was.
I hope to use Cairo to draw the viewport, and make the non-current Groups'
components display as semi-transparent.
Also, you will be able to open individual elements in their own Group, as
well as open/save/edit them as such. This eliminates the awkward buffer
manipulations that are currently needed to work on elements.
Ignoring the "All" Group, the following things should be set on a
per-Group basis:
o Group Name
o Group-specific routing styles
o Visible physical layers
o Active physical layer/routing style
o DRC rules (?)
o Undo/Redo buffer (?)
The following should be set globally:
o PCB name, board size, etc.
o Physical layers (numbers, names, colors)
o Global routing styles
That's what I've got now. What you you guys think?