User Tools

Site Tools


Extending gschem

Since the gschem configuration files are Scheme scripts, they provide a way to load additional capabilities into gschem by defining new functions that manipulate objects and pages.

gschem (and other gEDA/gaf tools such as gnetlist) use Guile Scheme to provide Scheme scripting capabilities, and all of the features of Guile are available to use. The Guile Reference Manual is available as an Info manual (info guile on most systems), or on the Guile website.

A collection of modules is provided for accessing and modifying gEDA objects and pages, called the gEDA Scheme API. The gEDA Scheme Reference Manual is also available as an Info manual (info geda-scheme).

Adding an action

Actions are thunks, i.e. Scheme procedures that take no arguments. For gschem to be able to find them, they must be defined in the top-level module, so you must do one of the following:

  • define the procedure directly in one of your configuration files;
  • define the procedure in a Scheme file loaded (using load) from one of your configuration files;
  • or export the procedure in a Guile module which you load (with use-modules) from your configuration files.

You can then bind the procedure to a keystroke as normal with global-set-key.

Hooking into built-in actions

gschem allows you to register functions, called hooks, to be executed when a user executes a built-in function. These are provided by the (gschem hook) Guile module. For more information, see the Hooks page in the gEDA Scheme Reference Manual.

Procedures for extension writers

In addition to the gEDA Scheme API functions, gschem provides some utility procedures for extension writers.

The functions described in this section are not guaranteed to remain stable from one release of gEDA/gaf to another. For longer-term stability, use only the gEDA Scheme API.
Function Description
gschem-print Export PostScript (see Printing) to the output filename specified with the -o command-line option, or the default PostScript filename if no option was given.
gschem-postscript FILENAME Export PostScript to FILENAME.
gschem-image FILENAME Export an image (see Exporting images) to the output filename specified with the -o command-line option, or to FILENAME if no option was given.
gschem-exit Exit gschem immediately. Warning: if the user has unsaved changes, he will not be given the opportunity to save them.
gschem-log MSG Write MSG to the gschem log.
gschem-msg MSG Display a message dialog to the user with the text MSG.
gschem-confirm MSG Display a confirmation dialog to the user, with “Yes” and “No” buttons and the text MSG. Return #t if the user selects “Yes”, and #f otherwise.
gschem-filesel MSG TEMPL FLAGS Display a file selector dialog, with MSG in the title and the default filename TEMPL. The FLAGS control the file selector behavior, and should be a list of strings. The following strings can be provided in the FLAGS: “may_exist” if the file selected is permitted to already exist; “must_exist” if the file selected must already exist; “must_not_exist” if the file selected must not already exist; “save” to show a “Save file…” dialog; “open” to show an “Open file…” dialog.
geda/gschem_ug/extensions.txt · Last modified: 2012/02/20 15:14 (external edit)