| << [[stroke.ru|Поддержка жестов мышью]]  |  **[[geda:gschem_ug.ru|Руководство пользователя gEDA gschem]]**  |  [[geda:gschem_ug.ru|Содержание]] >> |

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

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

В gschem (и других утилитах gEDA/gaf, таких как, например,
[[geda:gnetlist_ug.ru|gnetlist]]) для обеспечения возможности написания
скриптов на Scheme используется [[http://www.gnu.org/s/guile/|Guile
Scheme]], и в распоряжении разработчика оказываются все возможности языка
Guile. //Справочное руководство по Guile// [//Guile Reference Manual//]
можно найти либо в формате Info (''[[info://guile|info guile]]'' на
большинстве систем), либо в формате HTML на
[[http://www.gnu.org/software/guile/docs/docs.html|веб-странице Guile]].

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

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

Действия --- это отложенные вычисления [thunks], то есть процедуры Scheme,
не принимающие аргументов.  Чтобы программа gschem могла их найти, они
должны быть определены в верхнеуровневом
[[http://www.gnu.org/software/guile/manual/html_node/Modules.html|модуле]],
поэтому для добавления действия необходимо предпринять один из следующих
шагов:

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

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

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

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

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

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

^ Функция                        ^ Описание  ^
| ''gschem-print'' | Экспорт в выходной файл в формате PostScript (см. раздел [[Printing.ru|Печать]]), имя которого либо задаётся с помощью [[command_line.ru|ключа командной строки]] ''-o'', либо, если данный ключ не задан, устанавливается в значение по умолчанию, определённое в самой функции.  |
| ''gschem-postscript ИМЯ_ФАЙЛА'' | Экспорт PostScript в файл ''ИМЯ_ФАЙЛА''.  |
| ''gschem-image ИМЯ_ФАЙЛА'' | Экспорт изображения (см. раздел [[exporting.ru|Экспорт изображений]]) в выходной файл, указанный с помощью ключа ''-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"%%'' для вызова диалогового окна открытия файла. |
