You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-i18n/tde-i18n-ru/docs/tdewebdev/quanta/extending-quanta.docbook

1346 lines
64 KiB

<?xml version="1.0" encoding="UTF-8" ?>
<chapter id="extending-quanta-3-2">
<chapterinfo>
<title>Расширение &quantaplus;</title>
<authorgroup>
<author><firstname>Christopher</firstname> <surname>Hornbaker</surname> <affiliation> <address><email>chrishornbaker@earthlink.net</email></address>
</affiliation>
</author>
<author><firstname>Andr&#225;s</firstname> <surname>Mantia</surname> <affiliation> <address><email>amantia@kde.org</email></address>
</affiliation>
</author>
<othercredit role="translator"><firstname>Николай</firstname><surname>Шафоростов</surname><affiliation><address><email>shafff@ukr.net</email></address></affiliation><contrib>Перевод на русский</contrib></othercredit>
</authorgroup>
</chapterinfo>
<title>Расширение &quantaplus;</title>
<para>Эта глава описывает процесс расширения базовых возможностей &quantaplus; для ваших нужд и как вы можете содействовать её развитию. </para>
<!--<sect1 id="kommander-3-2">
<title>Using Kommander With &quantaplus;</title>
<para>
Kommander, by Marc Britton.
</para>
</sect1> -->
<sect1 id="dtep-intro-3-2">
<title>Пакеты правки типов документов (Document Type Editing Package, &DTEP;)</title>
<para>&DTEP; используются в &quantaplus; для поддержки языков разметки, сценариев и &CSS;. Они позволяют обеспечить такие функции как автозавершение, редактирование тегов. Их простота и надёжность делает &quantaplus; быстрой, дружественной средой для веб-разработчиков. </para>
<para>&DTEP; делятся на две семьи - разметочную (далее - семья 1) и сценарную с &CSS; (далее - семья 2). &DTEP; состоит из двух частей - каталога тегов и панелей инструментов. Каталог тегов состоит из файла описания description.rc и файла TagXML с расширением .tag. Панель инструментов - это набор кнопок со значками (над окном редактирования), каждая из которых соответствует какому-либо тексту, вставляемому в документ при нажатии на неё (часто это шаблон тега). </para>
<para>&DTEP; можно создать самому вручную (см. ниже), <link linkend="download-resources">загрузить</link> или создать автоматически из DTD. Такое преобразование описано в <xref linkend="converting-dtd"/>. </para>
<para>В этой части описывается создание файлов TagXML, &descriptionrc; и панелей инструментов. В общем, &DTEP;. </para>
<para>Файлы TagXML (.tag) определяют атрибуты, специфичные для данного тега и содержимое диалога "Свойства тега". Файл &descriptionrc; содержит правила и данные о &DTEP;. Панели инструментов позволяют быстро обратиться к тому или иному тегу для вставки его в документ. </para>
<sect2 id="dtep-packaging-3-2">
<title>Создание пакетов</title>
<para>Каталоги тегов - это обычные каталоги, содержащие файлы &descriptionrc; и TagXML. В их названии отражается название языка разметки с его версией (например, html-4.01-strict) </para>
</sect2>
<sect2 id="tagxml-3-2">
<title>TagXML</title>
<para>Таблица содержит список элементов, определённых в TagXML и говорит, обязательны они, или нет. Не смотря на то, что обязательны не все, рекомендуется всё же использовать как можно больше доступных элементов, чтобы пользователи имели больше настроек и информации. </para>
<informaltable>
<tgroup cols="3">
<thead>
<row>
<entry>Элемент</entry>
<entry>Использование по умолчанию</entry>
<entry>Частное использование</entry>
</row>
</thead>
<tbody>
<row>
<entry>TAGS</entry>
<entry>required</entry>
<entry>always</entry>
</row>
<row>
<entry>tag</entry>
<entry>required</entry>
<entry>always</entry>
</row>
<row>
<entry>label</entry>
<entry>optional</entry>
<entry>обязательно для диалога "Свойства"</entry>
</row>
<row>
<entry>attr</entry>
<entry>optional</entry>
<entry>обязательно для определения атрибута</entry>
</row>
<row>
<entry>tooltip</entry>
<entry>optional</entry>
<entry>обязательно для подсказок в диалоге "Свойства"</entry>
</row>
<row>
<entry>whatsthis</entry>
<entry>optional</entry>
<entry>обязательно для возможности отображения краткой справки <quote>Что это? </quote></entry>
</row>
<row>
<entry>list</entry>
<entry>optional</entry>
<entry>обязательно если attr имеет тип <quote>list</quote></entry>
</row>
<row>
<entry>item</entry>
<entry>optional</entry>
<entry>обязательно если используется &lt;list></entry>
</row>
<row>
<entry>textlocation</entry>
<entry>optional</entry>
<entry>always</entry>
</row>
<row>
<entry>location</entry>
<entry>optional</entry>
<entry>обязательно если используется метка</entry>
</row>
<row>
<entry>text</entry>
<entry>optional</entry>
<entry>обязательно если используется метка</entry>
</row>
<row>
<entry>children</entry>
<entry>optional</entry>
<entry>список тегов, которые могут использоваться в определяемом</entry>
</row>
<row>
<entry>child</entry>
<entry>required</entry>
<entry>дочерний элемент</entry>
</row>
<row>
<entry>stoppingtags</entry>
<entry>optional</entry>
<entry>список тегов, которые приводят к окончанию действия другого тега</entry>
</row>
<row>
<entry>stoppingtag</entry>
<entry>required</entry>
<entry>тег, который приводит к окончанию действия другого тега</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<sect3 id="dtep-element-descriptions-3-2">
<title>Описания элементов TagXML</title>
<para>Ниже детально описывается каждый элемент. </para>
<sect4 id="TAGS-3-2">
<title>TAGS</title>
<para>Корневой элемент файла TagXML. Может встречаться только один раз. Содержит определение нескольких тегов. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry><emphasis>НЕТ</emphasis></entry>
<entry>tag</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="tag-3-2">
<title>tag</title>
<para>Название определяемого тега. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>TAGS</entry>
<entry>label, attr, stoppingtags</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="6">
<thead>
<row>
<entry>Атрибут</entry><entry>Тип</entry><entry>Значения</entry>
<entry>По умолчанию</entry><entry>Use</entry><entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry><entry>string</entry><entry></entry><entry></entry>
<entry>required</entry><entry>Название определяемого тега.</entry>
</row>
<row>
<entry>single</entry><entry>boolean</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Требуется ли закрывающий тег &lt;/имя_тега>.</entry>
</row>
<row>
<entry>type</entry><entry>string</entry><entry></entry><entry>xmltag</entry>
<entry>optional</entry><entry>Тип определяемого тега.</entry>
</row>
<row>
<entry></entry><entry></entry><entry>xmltag</entry><entry></entry>
<entry></entry><entry>Тип тега основывается на XML (только семья 1).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>entity</entry><entry></entry>
<entry></entry><entry>Тип тега основывается на сущности (только семья 1).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>property</entry><entry></entry>
<entry></entry><entry>Тип тега основывается на &CSS; (только семья 2).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>function</entry><entry></entry>
<entry></entry><entry>Тип тега - функция сценария. Если это так, &lt;attr> становится аргументами функции (только семья 2).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>class</entry><entry></entry>
<entry></entry><entry>Тип тега - класс сценария (только семья 2).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>method</entry><entry></entry>
<entry></entry><entry>Тип тега - метод класса (только семья 2).</entry>
</row>
<row>
<entry>returnType</entry><entry>string</entry><entry></entry><entry>void </entry>
<entry>optional</entry><entry>Тип возвращаемого значения определяемой функции (только семья 2)</entry>
</row>
<row>
<entry></entry><entry></entry><entry>void</entry><entry></entry>
<entry></entry><entry>Возвращаемое значение игнорируется (void).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>int</entry><entry></entry>
<entry></entry><entry>Возвращается число (integer).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>float</entry><entry></entry>
<entry></entry><entry>Возвращается число с плавающей точкой (floating point).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>long</entry><entry></entry>
<entry></entry><entry>Возвращается длинное целочисленное (long integer).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>string</entry><entry></entry>
<entry></entry><entry>Возвращается строка</entry>
</row>
<row>
<entry>version</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Версия языка, для которой тег разрешён</entry>
</row>
<row>
<entry>extends</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Разрешено только если тип атрибута - "class". Имя базового класса (только семья 2).</entry>
</row>
<row>
<entry>class</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Разрешено только если тип атрибута - "method". Имя класса, к которому принадлежит метод (только семья 2).</entry>
</row>
<row>
<entry>common</entry><entry>boolean</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Если "yes", тег указывает группу общих атрибутов и они могут быть добавлены в любой другой тег (только семья 1).</entry>
</row>
<row>
<entry>comment</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>строка, выводящаяся возле имени тега в списке автозавершения</entry>
</row></tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="label-3-2">
<title>label</title>
<para>Добавить в диалог метку. Её текст указывается тегом &lt;text>. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>tag</entry>
<entry>text, location</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="attr-3-2">
<title>attr</title>
<para>Определяет один атрибут тега. Содержит имя, тип атрибута, информацию о его отображении. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>tag</entry>
<entry>location, list, tooltip, whatsthis, textlocation</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="6">
<thead>
<row>
<entry>Атрибут</entry><entry>Тип</entry><entry>Значения</entry>
<entry>По умолчанию</entry><entry>Use</entry><entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry><entry>string</entry><entry></entry><entry></entry>
<entry>required</entry><entry>Имя определяемого атрибута.</entry>
</row>
<row>
<entry>type</entry><entry>string</entry><entry></entry><entry>input</entry>
<entry>required</entry><entry>Тип определяемого атрибута.</entry>
</row>
<row>
<entry></entry><entry></entry><entry>input</entry><entry></entry>
<entry></entry><entry>Поте текстового ввода (text field).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>check</entry><entry></entry>
<entry></entry><entry>Логическое поле (check box).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>color</entry><entry></entry>
<entry></entry><entry>Значение поля - цвет</entry>
</row>
<row>
<entry></entry><entry></entry><entry>url</entry><entry></entry>
<entry></entry><entry>Значение поля - &URL; (или локальный файл)</entry>
</row>
<row>
<entry></entry><entry></entry><entry>list</entry><entry></entry>
<entry></entry><entry>Значение поля - запись указанного списка.</entry>
</row>
<row>
<entry>status</entry><entry>string</entry><entry></entry><entry>optional</entry>
<entry>required</entry><entry>Обязательность аргумента (только семья 2).</entry>
</row>
<row>
<entry></entry><entry></entry><entry>optional</entry><entry></entry>
<entry></entry><entry>Аргумент необязателен</entry>
</row>
<row>
<entry></entry><entry></entry><entry>required</entry><entry></entry>
<entry></entry><entry>Аргумент обязателен</entry>
</row>
<row>
<entry></entry><entry></entry><entry>implied</entry><entry></entry>
<entry></entry><entry>Аргумент есть неявный.</entry>
</row>
<row>
<entry>source</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Указывает источники вариантов значений атрибута в редакторе тегов и дереве атрибутов</entry>
</row>
<row>
<entry></entry><entry></entry><entry>selection</entry><entry></entry>
<entry></entry><entry>Выделенный текст</entry>
</row>
<row>
<entry></entry><entry></entry><entry>dcop</entry><entry></entry>
<entry></entry><entry>Вывод метода dcop</entry>
</row>
<row>
<entry>interface</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Требует source="dcop". Интерфейс dcop из &quantaplus;.</entry>
</row>
<row>
<entry>method</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Требует source="dcop" и имени интерфейса. Имя метода, предоставляемого интерфейсом &quantaplus;.</entry>
</row>
<row>
<entry>arguments</entry><entry>string</entry><entry></entry><entry></entry>
<entry>optional</entry><entry>Требует source="dcop" имени интерфейса и метода. Аргументы, передаваемые методу. Может быть пустым или "%tagname%" (имя текущего тега).</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="tooltip-3-2">
<title>tooltip</title>
<para>Текст подсказки поля (отображается при наведении курсора на него). </para>
<note>
<para>Поддерживается только обычный текст (т.е. нельзя использовать никакие теги). </para>
</note>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>attr</entry>
<entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="whatsthis-3-2">
<title>whatsthis</title>
<para>Текст "Что это?" для данного поля. </para>
<note>
<para>Поддерживается только обычный текст (т.е. нельзя использовать никакие теги). </para>
</note>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>attr</entry>
<entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="list-3-2">
<title>list</title>
<para>Тег, сводящий вместе записи в списке. Может употребляться только один раз для каждого описания атрибута. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>attr</entry>
<entry>item</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="item-3-2">
<title>item</title>
<para>Определяет запись в списке. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>list</entry>
<entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="textlocation-3-2">
<title>textlocation</title>
<para>Позиция в окне свойств параметра, отвечающего атрибуту тега. Может употребляться только один раз для каждого атрибута диалога (т.е. для каждого &lt;attr>). Не может содержать подэлементы. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry>
<entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>attr</entry>
<entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry>Атрибут</entry><entry>Тип</entry>
<entry>Use</entry><entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>row</entry><entry>неотрицательное целое</entry>
<entry>required</entry><entry>Ряд поля или метки при отображении в окне.</entry>
</row>
<row>
<entry>col</entry><entry>неотрицательное целое</entry>
<entry>required</entry><entry>Столбец поля или метки при отображении в окне.</entry>
</row>
<row>
<entry>rowspan</entry><entry>неотрицательное целое</entry>
<entry>optional</entry><entry>Число рядов, отводимых полю.</entry>
</row>
<row>
<entry>colspan</entry><entry>неотрицательное целое</entry>
<entry>optional</entry><entry>Число столбцов, отводимых полю.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="location-3-2">
<title>location</title>
<para>Положение и размер поля в окне свойств. Может употребляться только один раз для каждого поля в диалоге (т.е. для каждого &lt;attr> и &lt;label>). Не может содержать подэлементы. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry><entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>label, attr</entry><entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry>Атрибут</entry><entry>Тип</entry>
<entry>Use</entry><entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>row</entry><entry>неотрицательное целое</entry>
<entry>required</entry><entry>Ряд поля или метки при отображении в окне.</entry>
</row>
<row>
<entry>col</entry><entry>неотрицательное целое</entry>
<entry>required</entry><entry>Столбец поля или метки при отображении в окне.</entry>
</row>
<row>
<entry>rowspan</entry><entry>неотрицательное целое</entry>
<entry>optional</entry><entry>Число рядов, отводимых полю.</entry>
</row>
<row>
<entry>colspan</entry><entry>неотрицательное целое</entry>
<entry>optional</entry><entry>Число столбцов, отводимых полю.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="text-3-2">
<title>text</title>
<para>Текст метки или флажка (check box). </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry><entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>label, attr</entry><entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="children-3-2">
<title>children</title>
<para>Список элементов, которые могут использоваться в определяемом теге. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry><entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>tag</entry><entry>child</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="child-3-2">
<title>child</title>
<para>Дочерний тег. Не может содержать подэлементы. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry><entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>children</entry><entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry>Атрибут</entry><entry>Тип</entry><entry>Значения</entry>
<entry>Use</entry><entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry><entry>string</entry><entry></entry>
<entry>required</entry><entry>Тег, который может употребляться в некотором другом теге.</entry>
</row>
<row>
<entry>использование</entry><entry>string</entry><entry></entry>
<entry>optional</entry><entry>Отношение к родителю.</entry>
</row>
<row>
<entry></entry><entry></entry><entry>required</entry>
<entry></entry><entry>Родитель должен иметь как минимум одного потомка с этим именем.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="stoppingtags-3-2">
<title>stoppingtags</title>
<para>Список элементов, которые приводят к окончанию действия тега. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry><entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>tag</entry><entry>stoppingtag</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
<sect4 id="stoppingtag-3-2">
<title>stoppingtag</title>
<para>Тег, приводящий к окончанию действия другого тега. Не может содержать подэлементы. </para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Родительские элементы</entry><entry>Дочерние элементы</entry>
</row>
</thead>
<tbody>
<row>
<entry>stoppingtags</entry><entry><emphasis>НЕТ</emphasis></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry>Атрибут</entry><entry>Тип</entry>
<entry>Use</entry><entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry><entry>string</entry>
<entry>required</entry><entry>Теги, приводящие к окончанию действия другого тега.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
</sect3>
<sect3 id="tagxml-usage-3-2">
<title>Использование TagXML</title>
<para>Все файлы TagXML должны начинаться с декларации &XML;: &lt;?xml version="1.0" encoding="UTF-8"?>, правильно структурированными и закрытыми. </para>
<important>
<para>Пробелы не играют роли, однако следите за символами &amp; и &lt;. В элементах &lt;tooltip>, &lt;whatsthis>, &lt;text>, их лучше заменить на &amp;amp; и &amp;lt; соответственно. Невыполнение этого не приведёт к краху, но ваша работа может пропасть. </para>
</important>
</sect3>
<sect3 id="tagxml-validation-3-2">
<title>Проверка TagXML</title>
<para>Чтобы выполнить проверку файлов TagXML, выберите <quote>Сервис</quote>, <quote>Проверить TagXML.</quote>. </para>
<note>
<para>Эта функция пока что не реализована и проверка происходит при загрузке файлов TagXML в &quantaplus;. </para>
</note>
</sect3>
<sect3 id="tagxml-examples-3-2">
<title>Примеры TagXML</title>
<sect4 id="family-one-3-2">
<title>Семья 1</title>
<para>Ниже следует файл TagXML семьи 1. Он описывает элемент &W3C; &XML; &lt;schema>. Имя такого файла будет schema.tag. Просто, не так ли? </para>
<informalexample>
<literallayout><markup>
&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE TAGS>
&lt;TAGS>
&lt;tag name="schema">
&lt;label>
&lt;text>id&lt;/text>
&lt;location col="0" row="0"/>
&lt;/label>
&lt;attr name="id" type="input">
&lt;tooltip>A unique ID for the element.&lt;/tooltip>
&lt;whatsthis>A unique ID for the element.&lt;/whatsthis>
&lt;location col="1" row="0"/>
&lt;/attr>
&lt;label>
&lt;text>version&lt;/text>
&lt;location col="0" row="1"/>
&lt;/label>
&lt;attr name="version" type="input">
&lt;tooltip>Version of the schema.&lt;/tooltip>
&lt;whatsthis>Version of the schema.&lt;/whatsthis>
&lt;location col="1" row="1"/>
&lt;/attr>
&lt;label>
&lt;text>targetNamespace&lt;/text>
&lt;location col="0" row="2"/>
&lt;/label>
&lt;attr name="targetNamespace" type="input">
&lt;tooltip>&URI; reference of the namespace of this schema.&lt;/tooltip>
&lt;whatsthis>&URI; reference of the namespace of this schema.&lt;/whatsthis>
&lt;location col="1" row="2"/>
&lt;/attr>
&lt;label>
&lt;text>xmlns&lt;/text>
&lt;location col="0" row="3"/>
&lt;/label>
&lt;attr name="xmlns" type="input">
&lt;tooltip>&URI; reference for one or more namespaces for use in this schema.
If no prefix is used, then components of that namespace may be used unqualified.&lt;/tooltip>
&lt;whatsthis>&URI; reference for one or more namespaces for use in this schema.
If no prefix is used, then components of that namespace may be used unqualified.&lt;/whatsthis>
&lt;location col="1" row="3"/>
&lt;/attr>
&lt;label>
&lt;text>attributeFormDefault&lt;/text>
&lt;location col="0" row="4"/>
&lt;/label>
&lt;attr name="attributeFormDefault" type="list">
&lt;items>
&lt;item>qualified&lt;/item>
&lt;item>unqualified&lt;/item>
&lt;/items>
&lt;tooltip>Default form for all attributes within this schema.&lt;/tooltip>
&lt;whatsthis>Default form for all attributes within this schema.&lt;/whatsthis>
&lt;location col="1" row="4"/>
&lt;/attr>
&lt;label>
&lt;text>elementFormDefault&lt;/text>
&lt;location col="0" row="5"/>
&lt;/label>
&lt;attr name="elementFormDefault" type="list">
&lt;items>
&lt;item>qualified&lt;/item>
&lt;item>unqualified&lt;/item>
&lt;/items>
&lt;tooltip>Default form for all elements within this schema.&lt;/tooltip>
&lt;whatsthis>Default form for all elements within this schema.&lt;/whatsthis>
&lt;location col="1" row="5"/>
&lt;/attr>
&lt;label>
&lt;text>blockDefault&lt;/text>
&lt;location col="0" row="6"/>
&lt;/label>
&lt;attr name="blockDefault" type="input">
&lt;location col="1" row="6"/>
&lt;/attr>
&lt;label>
&lt;text>finalDefault&lt;/text>
&lt;location col="0" row="7"/>
&lt;/label>
&lt;attr name="finalDefault" type="input">
&lt;location col="1" row="7"/>
&lt;/attr>
&lt;/tag>
&lt;/TAGS>
</markup>
</literallayout>
</informalexample>
</sect4>
<sect4 id="family-two-3-2">
<title>Семья 2</title>
<para>Ниже следует файл TagXML семьи 2. Он описывает &PHP;-функцию перегрузки (overload). Имя такого файла будет overload.tag. </para>
<informalexample>
<literallayout><markup>
&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE tags>
&lt;tags>
&lt;tag name="overload" type="function" returnType="void">
&lt;attr name="class_name" type="string" status="optional"/>
&lt;/tag>
&lt;/tags>
</markup>
</literallayout>
</informalexample>
</sect4>
</sect3>
</sect2>
<sect2 id="descriptionrc-3-2">
<title>&descriptionrc;</title>
<para>Файл &descriptionrc; также имеет простую структуру, для него есть редактор, который можно вызвать из <menuchoice><guimenu>DTD</guimenu><guimenuitem>Параметры DTD...</guimenuitem></menuchoice>. Чтобы изменить &descriptionrc; вновь созданного &DTEP;, создайте файл &descriptionrc; со следующими параметрами: </para>
<para>
<informalexample>
<literallayout><markup>
[General]
Version = Пишите 1 для &quantaplus; версии &lt;=3.1.2 и 2 - для любой более поздней версии.
Name = Строка определения DTD. (-//&W3C;//DTD HTML 4.01 Transitional//EN)
NickName = Красивое имя DTD. (HTML 4.01 Transitional). если не указано, будет использоваться Name.
</markup>
</literallayout>
</informalexample>
</para>
<para>После того, как вы создали такой файл и сохранили его в папку с файлами тегов, загрузите новый &DTEP; через <menuchoice><guimenu>DTD</guimenu><guimenuitem>Загрузить пакет DTD (DTEP)...</guimenuitem></menuchoice>, теперь вы можете продолжить правку &DTEP;. Воспользуйтесь контекстной справкой (всплывающими подсказки и "что это?") панели инструментов редактора, или прочтите файл<filename>quanta/data/dtep/dtd-description.txt</filename> из исходного архива, в котором подробно описан формат. </para>
</sect2>
</sect1>
<sect1 id="user-actions">
<title>Действия, определяемые пользователем</title>
<para>В &quantaplus; можно настраивать и создавать свои действия, выполняемые при нажатии на кнопку панели инструментов, выборе пункта меню или нажатии комбинации клавиш. </para>
<para>Существует три типа действий, определяемых пользователем: <itemizedlist>
<listitem><para><link linkend="text-actions">Операции с текстом</link></para></listitem>
<listitem><para><link linkend="tag-actions">Операции с тегами</link></para></listitem>
<listitem><para><link linkend="script-actions">Операции на основе сценариев</link></para></listitem>
</itemizedlist>
</para>
<sect2 id="creating-actions">
<title>Создание действий</title>
<para>Создать действие можно с помощью пункт меню<menuchoice><guimenu>Настройка</guimenu><guimenuitem>Настроить действия</guimenuitem></menuchoice>: <mediaobject> <imageobject>
<imagedata fileref="dtep_doc_img7.png" format="PNG"/>
</imageobject>
</mediaobject>
<variablelist>
<varlistentry>
<term><guilabel>Тип</guilabel></term>
<listitem><para><link linkend="text-actions">Текст</link>, <link linkend="tag-actions">Тег</link> или <link linkend="script-actions">Сценарий</link>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Текст</guilabel></term>
<listitem><para>Имя действия, видимое пользователю.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Кнопка рядом с текстовой меткой</term>
<listitem><para>Значок, присвоенный данному действию. Щёлкните на нём чтобы его изменить.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Всплывающая подсказка</guilabel></term>
<listitem><para>Краткое описание действия.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Комбинация клавиш</guilabel></term>
<listitem><para>Комбинация клавиш, присвоенная действию.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Панели инструментов</guilabel></term>
<listitem><para>Панели инструментов, содержащие действие. Для подробностей см. <xref linkend="creating-toolbars-3-2"/>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Расширенные настройки</guilabel></term>
<listitem><para>Параметры, специфичные для каждого типа действий. См. далее </para></listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2 id="text-actions">
<title>Операции с текстом</title>
<para>
<mediaobject><imageobject>
<imagedata fileref="text-action.png" format="PNG"/>
</imageobject></mediaobject> Самые простые действия. Вы можете ввести текст в области <guilabel>Расширенные настройки</guilabel>, который будет вставлен в документ при выполнении действия. </para>
</sect2>
<sect2 id="tag-actions">
<title>Операции с тегами</title>
<para>Используется для вставки XML-тегов в текст. <mediaobject><imageobject> <imagedata fileref="tag-actions.png" format="PNG"/> </imageobject></mediaobject> <variablelist> <varlistentry> <term><guilabel>&lt;tag&gt;</guilabel></term> <listitem><para>Имя тега.</para></listitem> </varlistentry> <varlistentry> <term><guilabel>&lt;/tag&gt;</guilabel></term> <listitem><para>Если флажок отмечен, нужен также закрывающий тег. Если при вызове действия в документе будет присутствовать выделенный текст, то начальный тег будет вставлен перед ним, а закрывающий - после.</para></listitem> </varlistentry> <varlistentry> <term><guilabel>Запустить диалог "Изменить тег", если он доступен</guilabel></term> <listitem><para>Если для данного тега будет найден файл tagXML с описанием его атрибутов, перед вставкой тега будет предложено ввести их в диалоговом окне.</para></listitem> </varlistentry> </variablelist> Символы &lt;, &gt; и / не будут автоматически добавлены и вы должны ввести их сами. </para>
</sect2>
<sect2 id="script-actions">
<title>Операции на основе сценариев</title>
<para>
<mediaobject><imageobject>
<imagedata fileref="script-action.png" format="PNG"/>
</imageobject></mediaobject> Этот тип действий - самый мощный. С помощью него можно запускать внешние приложения (в основном это сценарии), которым будет передаваться документ или его часть. Примером такого типа служит стандартный диалог &quantaplus; <guibutton>Быстрый запуск</guibutton>, различные действия, связанные с (X)HTML. </para>
<para>Сначала нужно ввести строку запуска сценария, например: <command>sh /home/myHome/myScript.sh</command>. </para>
<para>Для указания пути рекомендуется использовать <command>%scriptdir</command> (например: <command>sh %scriptdir/myScript.sh</command>). Тогда сценарий будет искаться в нескольких папках, а именно: <itemizedlist> <listitem><para>глобальная папка сценариев: <filename><envar>$TDEDIR</envar>/share/apps/quanta/scripts</filename></para></listitem> <listitem><para>локальная папка сценариев: <filename><envar>$TDEHOME</envar>/share/apps/quanta/scripts</filename></para></listitem> <listitem><para>список путей пользователя: <envar>$PATH</envar></para></listitem></itemizedlist> Есть также другие переменные: <itemizedlist>
<listitem><para><command>%f</command>: адрес текущего документа. Последовательность символов "file:/" будет удалена из имени файла.</para></listitem>
<listitem><para><command>%input</command>: выделенный текст (см. далее).</para></listitem>
<listitem><para><command>%projectbase</command>: адрес текущего проекта. Если нет открытых проектов, возвращает пустую строку.</para></listitem>
<listitem><para><command>%pid</command>: PID процесса &quantaplus;. Если запущен один экземпляр &quantaplus; перед PID будет добавлено "unique ". Это может быть использовано для работы через DCOP.</para></listitem>
<listitem><para><command>%userarguments</command>: используется при событиях. Будет заменено свойствами события в следующем порядке: <variablelist>
<varlistentry>
<term>Первый аргумент</term>
<listitem><para>Дескриптор (id) сценария</para></listitem>
</varlistentry>
<varlistentry>
<term>Второй аргумент</term>
<listitem><para>имя события</para></listitem>
</varlistentry>
<varlistentry>
<term>Третий аргумент</term>
<listitem><para>параметры события, обычно имя текущего файла, или путь к файлу проекта.</para></listitem>
</varlistentry>
</variablelist>
</para></listitem>
</itemizedlist>
</para>
<para>Также сценарий может получить исходные данные напрямую от &quantaplus; через стандартный вход. В выпадающем списке <guilabel>Ввод</guilabel> вы можете выбрать данные, которые будут посылаться: <itemizedlist>
<listitem><para><guilabel>Ничего</guilabel>.</para></listitem>
<listitem><para><guilabel>Текущий документ</guilabel>: весь документ.</para></listitem>
<listitem><para><guilabel>Выделенный текст</guilabel>. Только когда выбран этот вариант, <command>%input</command> имеет смысл.</para></listitem>
</itemizedlist>
</para>
<para>Аналогично, можно получить вывод сценария через конфейеры. Существует два типа вывода: <itemizedlist> <listitem><para>обычный (stdout);</para> </listitem> <listitem><para>ошибки (stderr).</para> </listitem> </itemizedlist>Вы можете выбрать, что делать с выводом, возможные варианты: <itemizedlist>
<listitem><para><guilabel>Ничего</guilabel>.</para></listitem>
<listitem><para><guilabel>Вставить в позицию курсора</guilabel>.</para></listitem>
<listitem><para><guilabel>Заменить выделение</guilabel>.</para></listitem>
<listitem><para><guilabel>Заменить выделение</guilabel>.</para></listitem>
<listitem><para><guilabel>Создать новый документ</guilabel>.</para></listitem>
<listitem><para><guilabel>Заменить текущий документ</guilabel>.</para></listitem>
<listitem><para><guilabel>Окно сообщений</guilabel>: вывод сценарий будет помещён на служебную вкладку <guilabel>Сообщения</guilabel>.</para></listitem>
</itemizedlist>
</para>
<para>Варианты для вывода сообщений об ошибках такие же.</para>
</sect2>
</sect1>
<sect1 id="creating-toolbars-3-2">
<title>Создание панелей инструментов</title>
<para>Ниже следует описание создания панелей инструментов для &DTEP;. По сути, это - графические элементы, отвечающие определённому действию. Последнее - основа почти всех расширений, которые есть или будут появляться в будущем в &quantaplus;. Схема определения действия в &quantaplus; также годится для автозавершения и диалогов свойств тегов. </para>
<sect2 id="from-scratch-to-complete-3-2">
<title>С нуля до совершенства</title>
<para>Начнём с создания пользовательской панели инструментов: <menuchoice><guimenu>Панели инструментов</guimenu><guimenuitem>Добавить пользовательскую панель инструментов</guimenuitem></menuchoice>. </para>
<para>Если в языке разметки много тегов, лучше разделить их по группам. Для каждой группы создайте отдельную панель инструментов. В нашем случае тегов не много, поэтому обойдёмся одной. </para>
<para>Далее следует добавить и настроить действия - <menuchoice><guimenu>Настройка</guimenu><guimenuitem>Настроить действия...</guimenuitem></menuchoice>. </para>
<para>Нажмите кнопку <guibutton>Создать</guibutton> (внизу окна). </para>
<para>Заполните все необходимые поля и добавьте тег в соответствующую панель инструментов. </para>
<para>Если у тега есть атрибуты (и вы будете часто их использовать), отметьте <guilabel>Запустить диалог "Изменить тег", если он доступен</guilabel>, и каждый раз при использовании данного действия, будет предложено заполнить свойства добавляемого тега. </para>
<para>Теперь у вас должно быть что-то вроде этого. </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img7.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Нажмите кнопку <guibutton>Применить</guibutton>. </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img8.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Но что же получилось?! Как вы запомните, какой значок к какому действию относится? Давайте заменим его на свой (покрасивее). </para>
<para>Для создания значка можно использовать &tdeiconedit;. Запустите её из &kmenu;, <menuchoice> <guisubmenu>Графика</guisubmenu><guisubmenu>Дополнительные приложения</guisubmenu></menuchoice>) </para>
<para>&tdeiconedit; создаёт значки с расширением 32x32, однако нам нужно 22x22 - <menuchoice> <guimenu>Правка</guimenu> <guimenuitem>Изменить размер</guimenuitem> </menuchoice>. </para>
<para>Помните, что вы создаёте значок, который поможет вспомнить вам (и не только вам) действие, которому он отвечает, а не просто красивую картинку. </para>
<para>В нашем случае создаётся значок для тега &lt;start>,поэтому для него будет использоваться зелёный цвет. </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img15.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Сохраним значок. </para>
<para>После создания значка нужно ассоциировать его с действием. Откройте окно <emphasis>Настроить действия</emphasis> и выберите нужное действие. Слева от поля <emphasis>Текст</emphasis> есть кнопка - нажмите её. </para>
<para>Выберите <guilabel>Прочие пиктограммы</guilabel> и нажмите кнопку <guibutton>Обзор</guibutton>. </para>
<para>Перейдите в папку, в которой вы сохранили значок, выберите его и нажмите <guibutton>OK</guibutton>. </para>
<para>Нажмите кнопку <guibutton>Применить</guibutton>> или <guibutton>OK</guibutton>. </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img18.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Чтобы добавить какие-то общие для &quantaplus; функции на панель инструментов, или разделители кнопок, в окне <guilabel>Настроить панели инструментов</guilabel> выделите нужную панель инструментов и выберите в списке слева действие (или разделитель). </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img21.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Например, можно добавить <guilabel>Просмотр в Konqueror</guilabel>. </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img22.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Обратите внимание на то, что разделитель способствует группированию. Один человек подумал, что кнопка &konqueror;, стоящая рядом с зелёной кнопкой "Старт", имеет противоположное значение ("Стоп"). </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img23.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>После внесения изменений, нажмите кнопку <guibutton>OK</guibutton>. </para>
<para>Посмотрите на новую панель инструментов! Фантастика! </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img24.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>Не забудьте протестировать вашу новую панель инструментов нажатием всех расположенных на ней кнопок. </para>
<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img25.png" format="PNG"/>
</imageobject>
</mediaobject>
<para><menuchoice><guimenu>Панели инструментов</guimenu> <guisubmenu>Сохранить</guisubmenu><guimenuitem> Сохранить как локальную панель инструментов</guimenuitem></menuchoice>. </para>
<para>Сохраните её в правильной папке. Убедитесь, что вы заполнили &descriptionrc; так, чтобы при открытии документа данного типа, загружались соответствующие панели инструментов. </para>
</sect2>
</sect1>
<sect1 id="creating-quanta-docs-3-2">
<sect1info>
<title>Написание документации</title>
<authorgroup>
<author><firstname>Robert</firstname> <surname>Nickel</surname> <affiliation> <address><email>robert@artnickel.com</email></address>
</affiliation>
</author>
<othercredit role="translator"><firstname>Николай</firstname><surname>Шафоростов</surname><affiliation><address><email>shafff@ukr.net</email></address></affiliation><contrib>Перевод на русский</contrib></othercredit>
</authorgroup>
</sect1info>
<title>Написание документации</title>
<para>Самое заметное, что может сделать рядовой пользователь - дополнение документации по разметочному или скриптовому языку, который ему нравится. Далее описывается, как было создано дерево документации &PHP;. </para>
<para>Перед началом написания проверьте <ulink url="http://quanta.sf.net/main1.php?contfile=resource">репозиторий &quantaplus;</ulink>. </para>
<para>Первый шаг - получение существующей документации. Второй - создание файла <filename>docrc</filename>. </para>
<para>Общая форма docrc: </para>
<informalexample>
<literallayout>#KDE Config File
[Tree]
Doc dir=<replaceable>путь (относительно к этому файлу) к файлам html</replaceable> &eg; php42/
#top level elements
Top Element=<replaceable>Описание документации</replaceable> &eg; &PHP; 4.2 documentation
Section 1=Section1.html
Section 2=#Sec2.1,#Sec2.2,#Sec2.3
Sec2.1=Sec2.1.html
Sec2.2=Sec2.2.html
Sec2.3=Sec2.3.html
...
[Context]
ContextList=func1,func2,tag1,tag2,tag3
func1=func1.html
func2=func2.html
tag1=tag1.html
tag2=tag2.html
tag3=tag3.html
</literallayout>
</informalexample>
<para>Файл <filename>docrc</filename> разделён на две секции - Tree и Context. </para>
<para>Секция Tree определяет размещение вашей документации в структуре (слева в главном окне). Например: </para>
<mediaobject>
<imageobject>
<imagedata fileref="doc-view1.png" format="PNG"/>
</imageobject>
</mediaobject>
<para>В соответствии со структурой, описанной выше, <filename>docrc</filename> для &PHP; выглядит так: </para>
<informalexample>
<literallayout>#KDE Config File
[Tree]
Doc dir=php42/
#top level elements
Top Element=PHP 4.2 documentation
PHP 4.2 documentation=Table of Contents,#Getting Started,#Language Reference
Table of Contents=index.html
Getting Started=Introduction, ...
Introduction=introduction.html
...
Language Reference=Basic syntax, ...
Basic syntax=language.basic-syntax.html
...
</literallayout>
</informalexample>
<para>Обратите внимание на наличие <literal>#</literal> перед <quote>Getting Started</quote> и <quote>Language Reference</quote>. Это говорит о том, что они содержат подэлементы. </para>
<para>Table of Contents ссылается напрямую на файл (и следовательно отображается внизу структуры, папки показываются первыми). </para>
<important>
<para>Пробелы не влияют ни на что, но следите за символами &amp; и &lt;. Во всех файлах, основанных на &XML;, их лучше заменить на &amp;amp; и &amp;lt; соответственно. </para>
</important>
<para>Секция Context используется контекстно зависимой справки. Например, вы пишите скрипт &PHP; и вам нужно просмотреть документацию по функции <function>mysql_fetch_array</function>. Для этого вам нужно будет выделить её название и нажать <keycombo action="simul">&Ctrl;<keycap>H</keycap> </keycombo>. При этом отобразится сразу информация по этой функции. </para>
<variablelist>
<varlistentry>
<term>ContextList</term>
<listitem>
<para>Разделённый запятыми список контекстных пунктов, по которым будет доступна контекстная справка (для &PHP; - это его функции). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>Ссылки на файлы контекстной справки</term>
<listitem>
<para>Формат: "контекстный пункт=страница html". Например: acos=function.acos.html </para>
</listitem>
</varlistentry>
</variablelist>
<para>Готовая версия <filename>docrc</filename>: </para>
<informalexample>
<literallayout>#Keywords for context help
[Context]
ContextList=abs,acos,acosh,addcslashes,addslashes,...
abs=function.abs.html
acos=function.acos.html
acosh=function.acosh.html
addcslashes=function.addcslashes.html
addslashes=function.addslashes.html
...
</literallayout>
</informalexample>
<para>Теперь сохраните ваш файл <filename>docrc</filename> в папке <filename class="directory">$<envar>HOME</envar>/.trinity/share/apps/quanta/doc</filename> или <filename class="directory">$<envar>TDEDIR</envar>/share/apps/quanta/doc</filename> для локального или глобального использования соответственно. Затем создайте папку (как указано в файле <filename>docrc</filename>) в той же папке с <filename>docrc</filename> и скопируйте в неё страницы &HTML;. </para>
<para>Перезапустите &quantaplus; чтобы увидеть добавленную документацию. </para>
<para>После того, как вы убедитесь, что она годится для того, чтобы ею поделиться с другими пользователями, отправьте её с файлом <filename>docrc</filename> в <ulink url="http://quanta.sf.net/main1.php?contfile=resource">репозиторий &quantaplus;</ulink>. Вы не станете богатым, но вы сможете гордиться тем, что содействовали разработке самого лучшего инструмента веб-разработки в мире. </para>
</sect1>
<sect1 id="sharing-resources">
<title>Публикация ресурсов</title>
<para>С &quantaplus; вы не будете жадным одиночкой, с её помощью можно делиться разными расширениями (пакетами DTEP, панелями инструментов с действиями, сценариями, шаблонами) друг с другом. Есть два способа этого: </para>
<variablelist>
<varlistentry>
<term>Отправка по Email</term>
<listitem><para>Расширения (называемые также ресурсами) можно посылать по электронной почте. Для этого в нескольких (в т.ч. контекстных) меню есть пункт <guilabel>Отправить по E-Mail...</guilabel>. </para></listitem>
</varlistentry>
<varlistentry>
<term>Публикация на главном сервере</term>
<listitem><para>Если вы хотите поделиться своими расширениями со всеми, опубликуйте их в центральном хранилище. Присланные ресурсы проверяются и действительно публикуются только если они могут быть полезны другим. Для публикации, ресурс нужно подписать ключом GPG/PGP.</para>
<para>О том, как загружать расширения с центрального хранилища, обратитесь к разделу <xref linkend="download-resources"/>.</para>
<para>Во время передачи вам нужно будет ввести пароль к своему ключу GPG (он не будет сохранён), выбрав его перед этим. В диалоге <guilabel>Опубликовать</guilabel> заполните все поля (<guilabel>URL для просмотра</guilabel> можно оставить пустым) и нажмите <guilabel>OK</guilabel>.</para>
<para>Данный диалог можно открыть из <menuchoice><guimenu>DTD</guimenu><guimenuitem>Передать пакет DTD (DTEP)...</guimenuitem></menuchoice>, <menuchoice><guimenu>Панели инструментов</guimenu><guimenuitem>Передать панель инструментов...</guimenuitem></menuchoice>, контекстных меню файлов и папок в деревьях <guilabel>шаблонов</guilabel> и <guilabel>сценариев</guilabel>. </para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="download-resources">
<title>Загрузка расширений</title>
<para>На сайте &quantaplus; есть специальный раздел, в котором хранятся расширения, не вошедшие в основной дистрибутив из-за большого размера или редкого использования, или же они были опубликованы после выхода послежней версии программы. Такие ресурсы содержат в себе механизм автоматической установки. Чтобы получить к ним доступ, воспользуйтесь пунктом меню <guilabel>Загрузить</guilabel>, его можно найти в разных местах, например в <menuchoice><guimenu>DTD</guimenu><guimenuitem>Загрузить пакет DTD (DTEP)...</guimenuitem></menuchoice>, <menuchoice><guimenu>Панели инструментов</guimenu><guimenuitem>Загрузить панель инструментов...</guimenuitem></menuchoice>, в контекстных меню пустых областей или в корнях деревьев <guilabel>Шаблоны</guilabel>, <guilabel>Сценарии</guilabel> и <guilabel>Документация</guilabel>. </para>
<para>Перед непосредственной установкой расширения, &quantaplus; проверяет контрольную сумму и подпись. </para>
<para>
<caution><para>Устанавливайте расширения, особенно панели инструментов и сценарии, только из проверенных источников!</para></caution>
</para>
</sect1>
<sect1 id="converting-dtd">
<title>Получение &DTEP; из DTD</title>
<para>Добавление поддержки языков разметки, основанных на XML, автоматизировано, и пакет DTEP создаётся на основе DTD. </para>
<para><menuchoice><guimenu>DTD</guimenu><guimenuitem>Загрузить и конвертировать DTD...</guimenuitem></menuchoice>, выберите файл <filename>.dtd</filename>, содержащий определение DTD, после чего вы увидите следующее окно: <mediaobject> <imageobject>
<imagedata fileref="dtd-conversion.png" format="PNG"/>
</imageobject>
</mediaobject>
</para>
<para>Доступные поля:</para>
<itemizedlist>
<listitem><para><guilabel>Конечная папка:</guilabel> папка, в которую будут записаны данные создаваемого &DTEP;, будет расположена в <filename><envar>$TDEHOME</envar>/share/apps/quanta/dtep</filename>. </para>
</listitem>
<listitem><para><guilabel>Имя:</guilabel> строка определения DTD</para></listitem>
<listitem><para><guilabel>Отображаемое имя:</guilabel> имя, видимое пользователю.</para></listitem>
<listitem><para><guilabel>Строка описания !DOCTYPE:</guilabel> строка, которая должна присутствовать в теге !DOCTYPE, например HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</para></listitem>
<listitem><para><guilabel>DTD URL:</guilabel> Адрес файла DTD</para></listitem>
<listitem><para><guilabel>Расширение по умолчанию:</guilabel> расширение, которое обычно имеют файлы с данным DTD</para></listitem>
<listitem><para><guilabel>Теги и атрибуты с учётом регистра:</guilabel> обычно включено для языков, основанных на XML</para></listitem>
<listitem><para><guilabel>Настроить DTEP после преобразования:</guilabel> запустить редактор &descriptionrc; после завершения преобразования, чтобы вы могли проверить/настроить созданный &DTEP;.</para></listitem>
</itemizedlist>
</sect1>
</chapter>