« Поддержка жестов мышью | Руководство пользователя gEDA gschem | Содержание »

## Расширение функциональности gschem

Так как файлы настроек gschem представляют собой скрипты на языке Scheme, в них заложена возможность расширения функциональности gschem с помощью определения новых функций обработки объектов и страниц.

В gschem (и других утилитах gEDA/gaf, таких как, например, gnetlist) для обеспечения возможности написания скриптов на Scheme используется Guile Scheme, и в распоряжении разработчика оказываются все возможности языка Guile. Справочное руководство по Guile [Guile Reference Manual] можно найти либо в формате Info (`info guile` на большинстве систем), либо в формате HTML на веб-странице Guile.

Для доступа к объектам и страницам gEDA и для их изменения имеется набор модулей, называемый gEDA Scheme API. Есть и Справочное руководство по Scheme в gEDA [gEDA Scheme Reference Manual] в формате Info (`info geda-scheme`).

### Добавление действия

Действия — это отложенные вычисления [thunks], то есть процедуры Scheme, не принимающие аргументов. Чтобы программа gschem могла их найти, они должны быть определены в верхнеуровневом модуле, поэтому для добавления действия необходимо предпринять один из следующих шагов:

- определить процедуру непосредственно в одном из своих файлов настроек;
- определить процедуру в Scheme-файле, загружаемом (с помощью `load`) из одного из файлов настроек;
- или экспортировать процедуру в модуле Guile, который загружается (с помощью `use-modules`) из файлов настроек.

Затем как обычно — с помощью `global-set-key` — процедуру можно будет привязать к сочетанию клавиш.

### Перехват встроенных действий

gschem позволяет регистрировать функции, называемые функциями перехвата [hooks], которые должны выполняться при выполнении пользователем встроенной функции. Возможность работы с ними предоставляется модулем Guile `(gschem hook)`. Более подробную информацию об этом см. в разделе Hooks в gEDA Scheme Reference Manual.

### Процедуры для разработчиков расширений

В дополнение к функциям gEDA Scheme API, в gschem для удобства разработчиков расширений предусмотрено несколько вспомогательных процедур.

Нет гарантии, что функции, приведённые в этом разделе, не будут меняться в последующих версиях gEDA/gaf. Для обеспечения стабильности в долгосрочной перспективе используйте только gEDA Scheme API.

Функция | Описание
--- | ---
`gschem-print` | Экспорт в выходной файл в формате PostScript (см. раздел Печать), имя которого либо задаётся с помощью ключа командной строки `-o`, либо, если данный ключ не задан, устанавливается в значение по умолчанию, определённое в самой функции.
`gschem-postscript ИМЯ_ФАЙЛА` | Экспорт PostScript в файл `ИМЯ_ФАЙЛА`.
`gschem-image ИМЯ_ФАЙЛА` | Экспорт изображения (см. раздел Экспорт изображений) в выходной файл, указанный с помощью ключа `-o`, или, если данный ключ не задан, в файл `ИМЯ_ФАЙЛА`.
`gschem-exit` | Немедленный выход из gschem. Внимание: если у пользователя были несохранённые изменения в схемах, возможности их сохранить у него уже не будет.
`gschem-log СООБЩЕНИЕ` | Записать `СООБЩЕНИЕ` в журнал gschem.
`gschem-msg СООБЩЕНИЕ` | Открыть информационное диалоговое окно с текстом `СООБЩЕНИЕ`.
`gschem-confirm СООБЩЕНИЕ` | Открыть диалоговое окно подтверждения с кнопками “Да” [“Yes”] и “Нет” [“No”] и текстом `СООБЩЕНИЕ`. Возвратить `#t`, если пользователь выберет “Да”, или `#f` в противном случае.
`gschem-filesel СООБЩЕНИЕ ШАБЛОН ФЛАГИ` | Открыть диалоговое окно выбора файла с текстом `СООБЩЕНИЕ` в заголовке и установленным по умолчанию именем файла `ШАБЛОН`. `ФЛАГИ` управляют поведением диалогового окна выбора файла, и должны быть списком строк. В списке `ФЛАГИ` можно задавать следующие строки: `“may_exist”`, если допускается, что выбранный файл уже существует; `“must_exist”`, если выбранный файл уже должен существовать; `“must_not_exist”`, если выбранный файл ещё не должен существовать; `“save”` для вызова диалогового окна сохранения файла; `“open”` для вызова диалогового окна открытия файла.