<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title></title> <link rel="stylesheet" media="screen" type="text/css" href="./style.css" /> <link rel="stylesheet" media="screen" type="text/css" href="./design.css" /> <link rel="stylesheet" media="print" type="text/css" href="./print.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div class="table sectionedit780"><table class="inline"> <tr class="row0"> <td class="col0 leftalign"> « <a href="geda-gschem_ug-stroke.ru.html" class="wikilink1" title="geda-gschem_ug-stroke.ru.html">Поддержка жестов мышью</a> </td><td class="col1 centeralign"> <strong><a href="geda-gschem_ug.ru.html" class="wikilink1" title="geda-gschem_ug.ru.html">Руководство пользователя gEDA gschem</a></strong> </td><td class="col2 rightalign"> <a href="geda-gschem_ug.ru.html" class="wikilink1" title="geda-gschem_ug.ru.html">Содержание</a> » </td> </tr> </table></div> <!-- EDIT780 TABLE [1-204] --> <h2 class="sectionedit781"><a name="расширение_функциональности_gschem" id="расширение_функциональности_gschem">Расширение функциональности gschem</a></h2> <div class="level2"> <p> Так как <a href="geda-gschem_ug-config.ru.html" class="wikilink1" title="geda-gschem_ug-config.ru.html">файлы настроек</a> gschem представляют собой скрипты на языке Scheme, в них заложена возможность расширения функциональности gschem с помощью определения новых функций обработки объектов и страниц. </p> <p> В gschem (и других утилитах gEDA/gaf, таких как, например, <a href="geda-gnetlist_ug.ru.html" class="wikilink1" title="geda-gnetlist_ug.ru.html">gnetlist</a>) для обеспечения возможности написания скриптов на Scheme используется <a href="http://www.gnu.org/s/guile/" class="urlextern" title="http://www.gnu.org/s/guile/" rel="nofollow">Guile Scheme</a>, и в распоряжении разработчика оказываются все возможности языка Guile. <em>Справочное руководство по Guile</em> [<em>Guile Reference Manual</em>] можно найти либо в формате Info (<code>info guile</code> на большинстве систем), либо в формате <acronym title="HyperText Markup Language">HTML</acronym> на <a href="http://www.gnu.org/software/guile/docs/docs.html" class="urlextern" title="http://www.gnu.org/software/guile/docs/docs.html" rel="nofollow">веб-странице Guile</a>. </p> <p> Для доступа к объектам и страницам gEDA и для их изменения имеется набор модулей, называемый gEDA Scheme <acronym title="Application Programming Interface">API</acronym>. Есть и <em>Справочное руководство по Scheme в gEDA</em> [<em>gEDA Scheme Reference Manual</em>] в формате Info (<code>info geda-scheme</code>). </p> </div> <!-- EDIT781 SECTION "Расширение функциональности gschem" [206-1784] --> <h3 class="sectionedit782"><a name="добавление_действия" id="добавление_действия">Добавление действия</a></h3> <div class="level3"> <p> Действия — это отложенные вычисления [thunks], то есть процедуры Scheme, не принимающие аргументов. Чтобы программа gschem могла их найти, они должны быть определены в верхнеуровневом <a href="http://www.gnu.org/software/guile/manual/html_node/Modules.html" class="urlextern" title="http://www.gnu.org/software/guile/manual/html_node/Modules.html" rel="nofollow">модуле</a>, поэтому для добавления действия необходимо предпринять один из следующих шагов: </p> <ul> <li class="level1"><div class="li"> определить процедуру непосредственно в одном из своих файлов настроек;</div> </li> <li class="level1"><div class="li"> определить процедуру в Scheme-файле, загружаемом (с помощью <code>load</code>) из одного из файлов настроек;</div> </li> <li class="level1"><div class="li"> или экспортировать процедуру в модуле Guile, который загружается (с помощью <code>use-modules</code>) из файлов настроек.</div> </li> </ul> <p> Затем как обычно — с помощью <code>global-set-key</code> — процедуру можно будет привязать к сочетанию клавиш. </p> </div> <!-- EDIT782 SECTION "Добавление действия" [1785-3060] --> <h3 class="sectionedit783"><a name="перехват_встроенных_действий" id="перехват_встроенных_действий">Перехват встроенных действий</a></h3> <div class="level3"> <p> gschem позволяет регистрировать функции, называемые <em>функциями перехвата</em> [<em>hooks</em>], которые должны выполняться при выполнении пользователем встроенной функции. Возможность работы с ними предоставляется модулем Guile <code>(gschem hook)</code>. Более подробную информацию об этом см. в разделе <em>Hooks</em> в <em>gEDA Scheme Reference Manual</em>. </p> </div> <!-- EDIT783 SECTION "Перехват встроенных действий" [3061-3673] --> <h3 class="sectionedit784"><a name="процедуры_для_разработчиков_расширений" id="процедуры_для_разработчиков_расширений">Процедуры для разработчиков расширений</a></h3> <div class="level3"> <p> В дополнение к функциям gEDA Scheme <acronym title="Application Programming Interface">API</acronym>, в gschem для удобства разработчиков расширений предусмотрено несколько вспомогательных процедур. </p> <p> <p><div class="noteimportant">Нет гарантии, что функции, приведённые в этом разделе, не будут меняться в последующих версиях gEDA/gaf. Для обеспечения стабильности в долгосрочной перспективе используйте только gEDA Scheme <acronym title="Application Programming Interface">API</acronym>. </div></p> </p> <div class="table sectionedit785"><table class="inline"> <tr class="row0"> <th class="col0 leftalign"> Функция </th><th class="col1 leftalign"> Описание </th> </tr> <tr class="row1"> <td class="col0"> <code>gschem-print</code> </td><td class="col1 leftalign"> Экспорт в выходной файл в формате PostScript (см. раздел <a href="geda-gschem_ug-printing.ru.html" class="wikilink1" title="geda-gschem_ug-printing.ru.html">Печать</a>), имя которого либо задаётся с помощью <a href="geda-gschem_ug-command_line.ru.html" class="wikilink1" title="geda-gschem_ug-command_line.ru.html">ключа командной строки</a> <code>-o</code>, либо, если данный ключ не задан, устанавливается в значение по умолчанию, определённое в самой функции. </td> </tr> <tr class="row2"> <td class="col0"> <code>gschem-postscript ИМЯ_ФАЙЛА</code> </td><td class="col1 leftalign"> Экспорт PostScript в файл <code>ИМЯ_ФАЙЛА</code>. </td> </tr> <tr class="row3"> <td class="col0"> <code>gschem-image ИМЯ_ФАЙЛА</code> </td><td class="col1 leftalign"> Экспорт изображения (см. раздел <a href="geda-gschem_ug-exporting.ru.html" class="wikilink1" title="geda-gschem_ug-exporting.ru.html">Экспорт изображений</a>) в выходной файл, указанный с помощью ключа <code>-o</code>, или, если данный ключ не задан, в файл <code>ИМЯ_ФАЙЛА</code>. </td> </tr> <tr class="row4"> <td class="col0 leftalign"> <code>gschem-exit</code> </td><td class="col1 leftalign"> Немедленный выход из gschem. <strong>Внимание:</strong> если у пользователя были несохранённые изменения в схемах, возможности их сохранить у него уже не будет. </td> </tr> <tr class="row5"> <td class="col0 leftalign"> <code>gschem-log СООБЩЕНИЕ</code> </td><td class="col1 leftalign"> Записать <code>СООБЩЕНИЕ</code> в журнал gschem. </td> </tr> <tr class="row6"> <td class="col0 leftalign"> <code>gschem-msg СООБЩЕНИЕ</code> </td><td class="col1 leftalign"> Открыть информационное диалоговое окно с текстом <code>СООБЩЕНИЕ</code>. </td> </tr> <tr class="row7"> <td class="col0 leftalign"> <code>gschem-confirm СООБЩЕНИЕ</code> </td><td class="col1 leftalign"> Открыть диалоговое окно подтверждения с кнопками “Да” [“Yes”] и “Нет” [“No”] и текстом <code>СООБЩЕНИЕ</code>. Возвратить <code>#t</code>, если пользователь выберет “Да”, или <code>#f</code> в противном случае. </td> </tr> <tr class="row8"> <td class="col0 leftalign"> <code>gschem-filesel СООБЩЕНИЕ ШАБЛОН ФЛАГИ</code> </td><td class="col1"> Открыть диалоговое окно выбора файла с текстом <code>СООБЩЕНИЕ</code> в заголовке и установленным по умолчанию именем файла <code>ШАБЛОН</code>. <code>ФЛАГИ</code> управляют поведением диалогового окна выбора файла, и должны быть списком строк. В списке <code>ФЛАГИ</code> можно задавать следующие строки: <code>“may_exist”</code>, если допускается, что выбранный файл уже существует; <code>“must_exist”</code>, если выбранный файл уже должен существовать; <code>“must_not_exist”</code>, если выбранный файл ещё <em>не</em> должен существовать; <code>“save”</code> для вызова диалогового окна сохранения файла; <code>“open”</code> для вызова диалогового окна открытия файла. </td> </tr> </table></div> <!-- EDIT785 TABLE [4364-7312] --> </div> <!-- EDIT784 SECTION "Процедуры для разработчиков расширений" [3674-] --></body> </html>