WARNING: the gEDA project is not actively developed anymore. You may want to switch to the Ringdove EDA project which is similar in spirit but is active.

User Tools

Site Tools

search

geda:gschem_ug:extensions.ru

Расширение функциональности 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" для вызова диалогового окна открытия файла.
geda/gschem_ug/extensions.ru.txt · Last modified: 2014/04/24 14:24 by vzh