### Gschem schematic capture tool

##### Libgeda API formalization

In this project, you would expand libgeda (if needed) to provide a complete enough guile interface to be able to do more complex database manipulations. One use would be to have a back annotation tool that used libgeda instead of relying on perl. The problem with perl is that you've involved Yet Another Gschem Parser. This actually may be combined with the previous project about rewriting the gnetlist internals.

Difficulty = 3

##### Show hidden attributes for selected components

In gschem, please add a why to show hidden text for just one symbol only. Currently [en] will show all the hidden text for all symbols and that makes a real visual mess. Implement this by just showing the hidden text for the currently selected symbols.

Difficulty = 1

##### Constant sized handles/grips

In gschem, the size of the handles for lines, nets, and objects scale with increasing zoom. Thus for small lines the handles overlap, and if I zoom in closely, it becomes very hard to pick the right object to manipulate. Please let the size of the handles be constant, regardless of the zoom factor. This is virtually how all vector graphics applications work.

Difficulty = 1

##### Automatically fill in global attributes in gschem

In gschem, implement a mechanism that would (when turned enabled) automatically fill in proper global attributes for the design. These attributes could be the date of the last modification, name of the project, author, number of sheets, etc…

Difficulty = 1 to 2

##### Improve error messages in gschem

Improve error messages in gschem when a rc file doesn't load correctly. Currently the error messages are cryptic and not useful at all. There are several other places in gschem where the error messages could be vastly improved.

Difficulty = 1

##### Global search and replace

Add a dialog box that lets you do a global search and replace. Currently you can do a find for a specific attribute, but several users have asked if gschem could also provide a way of doing a replace operation as well.

Difficulty = 1 to 2

##### Improved and formalized mechanism for forward/backward annotation

Add hooks into gschem needed to fully support things like backannotation of simulation results and click-to-plot results. Specifically, this would enable you to draw a schematic in gschem, then simulate it in ngspice without leaving gschem. The simulation plots would then appear in a graphical pop-up window.

Difficulty = 3

##### Visual feedback for attached attributes

In gschem, add some sort of visual feedback to tell the user which attribute is attached to which component. This would be useful since sometimes you move attributes/components around and things get a little bit separated distance wise.

Difficulty = 1 to 2

##### Schematic and symbol modes

Add schematic and symbol modes to gschem. Right now users can do invalid things like add a net or bus inside a symbol and gschem allows this quite happily. If there was a symbol mode that disallowed certain actions, then users will not be able to hurt themselves so easily when creating symbols. Like wise a schematic mode wouldn't allow certain operations (such as adding a pin).

Difficulty = 2 to 3

##### Movable symbol origin

Add the ability to move the origin of a symbol in gschem. Right now the origin is always at 0,0 and users have to translate the symbol to the origin. It would be nice if the origin was movable so that you wouldn't have to translate the symbol manually anymore. This would also allow the user to pick the insert point of the symbol when adding components to a schematic.

Difficulty = 2 to 3

##### Modify instantiated symbols in a schematic

Add the ability to move pins/attributes/whatever on instantiated components in a schematic. This one is quite tricky, but it would allow for various things that people have been requesting (this might be a good foundation for a greatly improved back annotation mechanism from PCB).

Difficulty = 3 to 4

##### Finer grid when moving attributes

In gschem, add a finer grid when moving attributes or text around.

Difficulty = 2

##### Add more toolbar buttons

Adding some more useful buttons to the gschem toolbar. Typical functionalities that gschem does not have on the toolbar:

- Up/down schematic/symbol
- Add various graphical objects (maybe make these only appear in symbol editing mode)
- Edit component attributes
- Copy/paste/delete
- Page forward/back
- Component mirror/rotate
- Zoom in/out

It would be really nice if the toolbar buttons were configurable either on the fly or through an rc file.

Difficulty = 2 to 3

##### An Interactive Sub Sheet Generator

In gschem hierarchical design is accomplished by symbols in the top sheet that represent sub sheets. Currently these sub sheet symbols and the sub sheet itself have to be created manually. The purpose of this project is to design and implement an interactive generator of such symbols and sub sheets. It should work both strategies of hierachical design, bottom-up and top-down. Top-down refers to the case where the parent sheet is designed first and diverts into sub sheets. With bottom-up the sub sheets are designed first. The generator should accept user input on the number and the name of input and output signals. The generator may present a list of named net on the current sheet and let the user pick those that should link to the sub sheet. Power nets to be available on the sub sheet may be specified too. In case of a top-down approach the generator should additionally create a draft of the sub sheet with symbols for the in and out signals placed at some default position. The generator should integrate into the main GUI of gschem.

Some work has already been done to deal with the bottom-up case. See the bash script geda_sch2sym in the bug tracker. This may be used as a starting point. However, a restart from scratch would be welcome too.

Difficulty = 2