| << [[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 для удобства разработчиков расширений предусмотрено несколько вспомогательных процедур. Нет гарантии, что функции, приведённые в этом разделе, не будут меняться в последующих версиях gEDA/gaf. Для обеспечения стабильности в долгосрочной перспективе используйте только gEDA Scheme API. ^ Функция ^ Описание ^ | ''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"%%'' для вызова диалогового окна открытия файла. |