>&ksplash; — симпатичный экран, показывающий процесс загрузки KDE. Вопросы и пожелания отправляйте в списки рассылки &kde;. Отличительные особенности &ksplash;: </para>
<simplelist>
<member
>Возможность применения тем</member>
<member
>Высокая гибкость в настройке обеспечивается использованием подключаемых модулей</member>
<member
>Программа может быть использована любым приложением, которое работает с DCOP</member>
</simplelist>
<para
>Это руководство объясняет, как создавать темы для использования с уже доступными подключаемыми модулями. Если ни один из доступных модулей не удовлетворяет вашему вкусу, вы можете научиться полностью настраивать внешний вид &ksplash;, создавая подключаемые модули на C++. </para>
</chapter>
<chapter id="using-themes">
<title
>Использование тем</title>
<para
>Чтобы использовать темы с <ulink url="http://www.kde-look.org"
> (чтобы сделать их доступными для всех пользователей вашей системы).</para>
<para
>Чтобы сделать это автоматически, используйте модуль <guilabel
>Заставка</guilabel
> раздела <guilabel
>Внешний вид и темы</guilabel
> Центра управления &kde;.</para>
<sect1 id="using-kcontrol-module">
<title
>Модуль Центра управления</title>
<para
>Этот модуль позволяет устанавливать, проверять и удалять темы &ksplash;.</para>
<para
>Внизу расположен список доступных тем &ksplash;. При выборе одной из последних, её предварительный просмотр появится в соответствующей части окна. Чтобы активировать тему, нажмите <guibutton
>OK</guibutton
> или <guibutton
>Применить</guibutton
>.</para>
<para
>Чтобы установить новые модули, нажмите <guibutton
>Добавить...</guibutton
>. Не нужно распаковывать файлы тем, они могут обрабатываться и в сжатом виде.</para>
>. Если тема установлена для всех пользователей, то удалять её нужно с правами администратора. Также, мы не рекомендуем удалять тему «<guilabel
>По умолчанию</guilabel
>».</para>
</sect1>
</chapter>
<chapter id="themes">
<title
>Как создавать темы для &ksplash;</title>
<sect1 id="themes-general">
<title
>Основные положения</title>
<para
>Создавать свои собственные темы для &ksplash; достаточно легко. Когда вы закончили свою тему, вы можете отправить её на <ulink url="http://www.kde-look.org"
>KDE-Look</ulink
>, чтобы её могли использовать другие.</para>
<sect2 id="theme-syntax">
<title
>Определение своей темы</title>
<para
>Давайте создадим тему под названием <literal
>MyCoolTheme</literal
>. Чтобы тема была найдена &ksplash;, следует поместить её в папку <filename class="directory"
>MyCoolTheme</filename
> в папке <filename class="directory"
>~/.kde/apps/ksplash/Themes/</filename
>. В ней должен содержаться файл <filename
>Theme.rc</filename
>, содержащий настройки темы. Вы можете установить множество особенностей для темы, изменить движок подключаемых модулей и т. д. Не обязательно использовать все доступные параметры, обычно используются только некоторые. Синтаксис записей файла <filename
>После того как вы задали имя, описание и автора темы, вам следует выбрать движок темы (подключаемый модуль). Затем вы сможете настроить разнообразные характеристики движка темы, устанавливая пары параметр=значение, как в вышеприведённом файле.</para>
<important>
<para
>Важно, чтобы имя папки, в которой хранятся файлы темы (<filename class="directory"
>~/.kde/apps/ksplash/Themes/MyCoolTheme</filename
> в данном примере) и идентификатор (<literal
>[KSplash Theme: MyCoolTheme] </literal
> в данном примере) в <filename
>Theme.rc</filename
> совпадали. В противном случае, &ksplash; не распознает тему.</para>
</important>
</sect2>
<sect2 id="theme-files">
<title
>Файлы фона</title>
<para
>При запуске &ksplash; пытается найти файл фона, соответствующий текущему разрешению экрана (если файл используется движком темы). Формат названия файла фона: <filename
>Background-<replaceable
>WWWxHHH</replaceable
>.png</filename
>, где WWW-ширина, а HHH-высота изображения.</para>
<para
>Например, вам надо использовать файл <filename
>Background-1024x768</filename
>. Если файл, соответствующий текущему разрешению экрана, не найден, программа пытается изменить размер файла <filename
>Background.png</filename
> (или другого, заданного в <filename
>Theme.rc</filename
>) так, чтобы он соответствовал разрешению. Изменение размера <quote
>на лету</quote
> занимает некоторое время, так что вам следует создать файлы как минимум для следующих разрешений экрана: 1280x1024, 1024x768 и 800x600.</para>
</sect2>
</sect1>
<sect1 id="theme-engines">
<title
>Параметры движков тем</title>
<sect2 id="default-themes">
<title
>Тема, используемая по умолчанию</title>
<table>
<title
>Настройка темы по умолчанию</title>
<tgroup cols="3">
<tbody>
<row>
<entry
>Параметр</entry>
<entry
>Значение</entry>
<entry
>Описание</entry>
</row>
<!-- Statusbar -->
<row>
<entry
>Always Show Progress</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будет ли показан прогресс загрузки. Значение по умолчанию — true.</entry>
</row>
<row>
<entry
>Label Foreground</entry>
<entry
>[цвет]</entry>
<entry
>Цвет текста индикатора состояния. Значение по умолчанию — white (белый, #FFFFFF).</entry>
</row>
<!-- Misc. things -->
<row>
<entry
>Icons Flashing</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будут ли мерцать значки. По умолчанию — true (да).</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 id="standard-themes">
<title
>Стандартная тема</title>
<table>
<title
>Параметры стандартной темы</title>
<tgroup cols="3">
<tbody>
<row>
<entry
>Параметр</entry>
<entry
>Значение</entry>
<entry
>Описание</entry>
</row>
<!-- Statusbar -->
<row>
<entry
>Statusbar Position</entry>
<entry
>[top/bottom]</entry>
<entry
>Определяет расположение индикатора состояния на экране. Значение по умолчанию — bottom (внизу).</entry>
</row>
<row>
<entry
>Statusbar Visible</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будет ли индикатор состояния видимым. Значение по умолчанию — true (да).</entry>
</row>
<row>
<entry
>Progress Visible</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будет ли показан прогресс загрузки. Значение по умолчанию — true.</entry>
</row>
<!-- Fonts -->
<row>
<entry
>Statusbar Font</entry>
<entry
>[шрифт]</entry>
<entry
>Шрифт, используемый в индикаторе состояния. Значение по умолчанию — Helvetica.</entry>
</row>
<row>
<entry
>Statusbar Font Size</entry>
<entry
>[размер]</entry>
<entry
>Размер шрифта индикатора состояния. Значение по умолчанию — 16 пт.</entry>
</row>
<row>
<entry
>Statusbar Font Bold</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будет ли шрифт индикатора состояния полужирным. Значение по умолчанию — true (да).</entry>
</row>
<row>
<entry
>Statusbar Font Italic</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будет ли шрифт индикатора состояния курсивным. Значение по умолчанию — false (нет).</entry>
</row>
<!-- Misc. things -->
<row>
<entry
>Statusbar Foreground</entry>
<entry
>[цвет]</entry>
<entry
>Цвет переднего плана индикатора состояния. Значение по умолчанию — white (белый).</entry>
</row>
<row>
<entry
>Statusbar Background</entry>
<entry
>[цвет]</entry>
<entry
>Цвет фона индикатора состояния. Значение по умолчанию — black (чёрный).</entry>
</row>
<row>
<entry
>Statusbar Icon</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будет ли значок у индикатора состояния.</entry>
</row>
<row>
<entry
>Icons Visible</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будут ли значки видимыми. Значение по умолчанию — true (да).</entry>
</row>
<row>
<entry
>Icons Jumping</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будут ли прыгать значки. Значение по умолчанию — true (да).</entry>
</row>
<row>
<entry
>Icon Position</entry>
<entry
>[0-3, 10-13]</entry>
<entry
>Расположение значков. Значение по умолчанию — вверху слева.</entry>
>Определяет, будет ли использоваться значок, соответствующий пользователю при входе в систему. Значение по умолчанию — true (да).</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 id="macx-themes">
<title
>Тема MacX</title>
<table>
<title
>Параметры темы MacX</title>
<tgroup cols="3">
<tbody>
<row>
<entry
>Параметр</entry>
<entry
>Значение</entry>
<entry
>Описание</entry>
</row>
<row>
<entry
>Icon Size Minimum</entry>
<entry
>[размер]</entry>
<entry
>Минимальный размер значков. Значение по умолчанию — 16 пикселей.</entry>
</row>
<row>
<entry
>Icon Size Maximum</entry>
<entry
>[размер]</entry>
<entry
>Максимальный размер значков. Значение по умолчанию — 64 пикселя.</entry>
</row>
<row>
<entry
>Optimized Icon Rendering</entry>
<entry
>[true/false]</entry>
<entry
>Будет ли оптимизироваться отрисовка значков. Значение по умолчанию — true (да).</entry>
</row>
<row>
<entry
>Progress Bar Visible</entry>
<entry
>[true/false]</entry>
<entry
>По умолчанию — true (да).</entry>
</row>
<row>
<entry
>Progress Bar Position</entry>
<entry
>[top/bottom]</entry>
<entry
>Определяет расположение индикатора состояния (внизу или вверху). По умолчанию - bottom (внизу).</entry>
</row>
<row>
<entry
>Icons Jumping</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будут ли прыгать значки. Значение по умолчанию — false (нет).</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 id="mac-classic-themes">
<title
>Тема MacClassic</title>
<table>
<title
>Параметры темы MacClassic</title>
<tgroup cols="3">
<tbody>
<row>
<entry
>Параметр</entry>
<entry
>Значение</entry>
<entry
>Описание</entry>
</row>
<row>
<entry
>Icon Position</entry>
<entry
>[0-3, 10-13]</entry>
<entry
>Расположение значков на экране. Значение по умолчанию — внизу слева.</entry>
</row>
<row>
<entry
>Icons Jumping</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будут ли прыгать значки. Значение по умолчанию — false (нет).</entry>
</row>
<row>
<entry
>Icons Visible</entry>
<entry
>[true/false]</entry>
<entry
>Определяет, будут ли значки видимыми. Значение по умолчанию — true (да).</entry>
</row>
<row>
<entry
>Splash Screen</entry>
<entry
>[название]</entry>
<entry
>Название заставки.</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 id="themes-2k">
<title
>Тема 2k</title>
<table>
<title
>Параметры темы 2k</title>
<tgroup cols="3">
<tbody>
<row>
<entry
>Параметр</entry>
<entry
>Значение</entry>
<entry
>Описание</entry>
</row>
<row>
<entry
>Title Background Color</entry>
<entry
>[цвет]</entry>
<entry
>Фоновый цвет заголовка. Значение по умолчанию — dark blue (тёмно-синий).</entry>
</row>
<row>
<entry
>Title Foreground Color</entry>
<entry
>[цвет]</entry>
<entry
>Цвет переднего плана заголовка. Значение по умолчанию — white (белый).</entry>
</row>
<row>
<entry
>Status Text Color</entry>
<entry
>[цвет]</entry>
<entry
>Цвет текста состояния. По умолчанию соответствует фоновому тексту заголовка (определяемому параметром «Title Background Color»).</entry>
</row>
<row>
<entry
>Rotator Color 1</entry>
<entry
>[цвет]</entry>
<entry
>Определяет цвет индикатора 1. Значение по умолчанию — dark blue (тёмно-синий).</entry>
</row>
<row>
<entry
>Rotator Color 2</entry>
<entry
>[цвет]</entry>
<entry
>Определяет цвет индикатора 2. Значение по умолчанию — cyan (циан).</entry>
</row>
<row>
<entry
>Rotator Speed</entry>
<entry
>[значение]</entry>
<entry
>Определяет скорость индикатора. Значение по умолчанию — 30.</entry>
</row>
<row>
<entry
>Window Title</entry>
<entry
>[текст]</entry>
<entry
>Определяет текст заголовка окна.</entry>
</row>
<row>
<entry
>Logo File</entry>
<entry
>[имя_файла]</entry>
<entry
>Определяет используемый логотип.</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
</sect1>
</chapter>
<chapter id="from-other-applications">
<title
>Использование &ksplash; в вашем собственном приложении</title>
<para
>В этой главе описывается простой метод использования &ksplash; в качестве заставки для вашего приложения &kde;. Если вы не разрабатываете приложения для &kde;, вы можете опустить эту главу.</para>
<sect1 id="basic-other-reqs">
<title
>Основные требования</title>
<para
>Ваше приложение &kde; должно работать с &DCOP;. &DCOP; — это технология &kde;, использующаяся для коммуникации между приложениями. Если вы используете <ulink url="http://developer.kde.org"
>стандартную структуру приложения &kde;</ulink
>, это обеспечивается автоматически. Чтобы получить информацию о &DCOP; и связанных технологиях &kde;, посетите <ulink url="http://developer.kde.org"
>сайт разработчиков &kde;</ulink
>.</para>
</sect1>
<sect1 id="other-using">
<title
>Запуск &ksplash;</title>
<para
>До того, как ваше приложение начнёт вычисления, загрузку подключаемых модулей и т.д., запустите &ksplash;. Образец:</para>
>Это всё, что вам необходимо, чтобы использовать все преимущества &ksplash;.</para>
</sect1>
</chapter>
<!-- FIXME: Better to leave this out until it's written, or the translators -->
<!-- will have to still translate it ... -->
<chapter id="wrplugins">
<title
>Создание новых подключаемых модулей &ksplash;</title>
<para
>Создавать подключаемые модули &ksplash; нетрудно. В этой главе мы напишем простой модуль, который эмулирует экран загрузки одной очень известной операционной системы. Предполагается, что вы знакомы с основами языка C++ и хотя бы немного — с программированием для KDE/Qt.</para>
<sect1 id="basic-requirements">
<title
>Основные требования</title>
<para
>Мы создадим модуль с названием <literal
>2k</literal
>. Название используется во многих местах. Важно не исказить его, чтобы модуль был распознан &ksplash;. Модули &ksplash; являются динамически загружаемыми библиотеками со следующими объявлениями: </para>
<simplelist>
<member
>Библиотеку следует называть по образцу: <filename
>Наконец, библиотека должна возвращать класс с названием <literal
>Theme+название_темы</literal
>, в нашем случае — <literal
>Theme2k</literal
>.</member>
</simplelist>
<para
>Не беспокойтесь, если вы не поняли всё вышесказанное. Далее мы рассмотрим каждый шаг в деталях. Важной деталью является то, что класс модуля вы должны взять из <literal
>ThemeEngine</literal
>. </para>
</sect1>
<sect1 id="skeleton">
<title
>Создание основы</title>
<para
>При создании модуля мы будем использовать основу для приложения &kde;, которая обеспечит независимость от платформы во всех частях нашей работы. Убедитесь, что в вашей системе установлен пакет <filename
>, чтобы создать приложение с названием "2k". Будет создана папка, содержащая основные файлы (такие как AUTHORS и т.п.). Нам нужна подпапка <filename class="directory"
>2k</filename
>. Удалите все файлы в ней, и основа готова. </para>
<para
>На следующем этапе вы должны создать файл <filename
>.desktop</filename
>, который, после установки, сообщит &ksplash;, что подключаемый модуль доступен. В соответствии с правилами наименования файлов, которые даны <link linkend="basic-requirements"
>в предыдущей секции</link
>, создайте файл <filename
>ksplash2k.desktop</filename
>. Он должен содержать следующие строки: </para>
<programlisting
><literal>
[Desktop Entry]
Encoding=UTF-8
Type=Service
Comment=KSplash Plugin
Name=KSplash2k
ServiceTypes=KSplash/Plugin
X-KDE-Library=ksplash2k
X-KSplash-Default=true
X-KSplash-PluginName=2k
X-KSplash-ObjectName=Theme2k
</literal
>
</programlisting>
<para
>Параметры <literal
>Encoding</literal
>, <literal
>Type</literal
>, <literal
>Comment</literal
> и <literal
>ServiceTypes</literal
> одинаковы для всех подключаемых модулей. Название модуля и библиотеки следуют вышеописанным правилам. Параметр <literal
>X-KSplash-Default</literal
> может принимать одно из двух значений (true или false). Он определяет, будет ли этот модуль показан в Центре управления KDE. За исключением некоторых очень редких случаев, его значение должно быть <constant
>true</constant
>. </para>
</sect1>
<sect1 id="headerfile">
<title
>Объявление класса подключаемого модуля</title>
<para
>Теперь, когда мы закончили подготовительную работу, начинается действительно интересная часть — создание класса, который обеспечивает нужное поведение модуля. Хотя мы вольны делать с этим классом всё, что хотим, существует несколько ограничений.</para>
<orderedlist>
<listitem
><para
>Классы модуля должны наследоваться от класса <constant
>ThemeEngine</constant
>.</para
></listitem>
<listitem
><para
>Классы модуля следует называть в соответствии с правилом: <classname
>Theme+название_модуля</classname
>.</para
></listitem>
<listitem
><para
>Классы модуля должны обеспечивать <literal
>статическую</literal
> функцию с названием <function
>names</function
>, которая возвращает список названий, под которыми она может быть задействована.</para
></listitem>
<listitem
><para
>Чтобы модуль можно было настраивать из Центра управления KDE, он должен включать класс, основанный на классе <literal
>ThemeEngineConfig</literal
>.</para
></listitem>
<listitem
><para
>Классы модуля должны перекрывать хотя бы одну из следующих виртуальных функций: <function
>slotSetText</function
>, <function
>slotSetPixmap</function
>, <function
>slotUpdateProgress</function
> и <function
>slotUpdateSteps</function
>, чтобы обеспечить возможность использования.</para
>, чтобы модуль можно было использовать из <classname
>KGenericFactory</classname
>.</para
></listitem>
</orderedlist>
<para
>Последнее требование может показаться сложным, но, как мы увидим позже, вы можете обычно игнорировать его, добавив одну строку к исходному коду.</para>
</sect1>
<sect1 id="headercode">
<title
>Код файла заголовка</title>
<para
>Присвоив значения константам, мы увидим, что файл заголовков <filename
>, и к тому же обеспечивает простой метод <methodname
>Theme2k::slotSetText()</methodname
>. На данном этапе вам не следует беспокоиться насчёт класса <classname
>RotWidget</classname
>. Это небольшой элемент графического интерфейса, который делает программу более наглядной для пользователя. Наш подключаемый модуль очень прост: он не показывает ни значков, ни индикатора загрузки. Если вы хотите использовать значки, перекройте функцию <function
>slotSetPixmap</function
>. Подобные функции есть для установки индикатора загрузки (<function
>slotUpdateSteps</function
>) и увеличения счётчика (<function
>slotUpdateProgress</function
>) текущего шага. </para>
</sect1>
<sect1 id="Implementation">
<title
>Реализация подключаемого модуля</title>
<para
>Мы проверим только связанные части реализации. В приложении находится описание всей реализации. В первую очередь нам необходимо удовлетворить требованиям библиотеки:</para>
>Так как мы работаем для пользователей, следует обеспечить подходящие параметры по умолчанию для параметров, которые не представлены в файле темы. Обратите внимание, что группу следует устанавливать следующим образом: "KSplash Theme: название_темы", чтобы обеспечить совместимость с будущими спецификациями темы. Метод <function
>initUI()</function
> не представляет большого интереса, он просто организует элементы графического интерфейса. Детали указаны в приложении. </para>
</sect1>
<sect1 id="compilingfile">
<title
>Компиляция подключаемого модуля</title>
<para
>Для компиляции модуля мы решили использовать основу &kde;, поэтому необходимо создать файл <filename
>Чтобы получить дальнейшую информацию по созданию <filename
>Makefile.am</filename
>, загляните на <ulink url="http://developer.kde.org/documentation/other/makefile_am_howto.html"
>веб-сайт</ulink
> разработчиков &kde;. Заметим, что мы создаём тему по умолчанию, основанную на этом модуле, и прилагаем к нему графический файл фона. В качестве жеста доброй воли по отношению к пользователям создайте файл <filename
>Theme.rc</filename
>, иллюстрирующий примеры использования различных параметров.</para>
>Чтобы иметь возможность использовать возможности &ksplash; вам необходим &kde; версии 3.2 или выше. Если тема не работает, свяжитесь с её автором, чтобы выяснить, где можно взять подходящий подключаемый модуль.</para>