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/tdeedu/kstars/dcop.docbook

80 lines
13 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<chapter id="dcop">
<title>Сценарии в KStars: интерфейс DCOP</title>
<para>Одна из задач &kstars; - предоставить возможность визуализировать сложные процессы из сценариев. С помощью сценариев (скриптов) вы сможете создать <quote>виртуальные туры</quote> по небу, или подготовить наглядную презентацию чтобы продемонстрировать основные концепции астрономии (что особенно важно для преподавателей). Можно написать сценарий для &kstars; даже если не все желаемые функции доступны. Итак, несмотря на то, что со временем у нас будет графический интерфейс для написания сценариев, сейчас они должны быть написаны вручную. Эта глава посвящена написанию сценариев &kstars;. </para>
<para>&kde; предоставляет необходимую инфраструктуру (framework) для сценариев - интерфейс <abbrev>DCOP</abbrev>. <abbrev>DCOP</abbrev> расшифровывается как <quote>коммуникационный протокол рабочего стола</quote> (<quote>Desktop Communication Protocol</quote>). Посредством <abbrev>DCOP</abbrev>, приложения &kde; могут контролироваться другими приложениями, с (удалённого) терминала, или с помощью текстового сценария. </para>
<sect1 id="dcop-interface">
<title>Функции DCOP </title>
<para>Интерфейс &kstars; <abbrev>DCOP</abbrev> содержит следующие функции: <itemizedlist>
<listitem><para><function> lookTowards( const QString direction )</function>: Центрировать экран на направление, переданное в качестве аргумента. Это может быть название любого объекта на небе, или одно из следующих слов или сокращений: zenith (или z), north (n), northeast (ne), east (e), southeast (se), south (s), southwest(sw), west(w), northwest (nw). </para></listitem>
<listitem><para><function> setRaDec( double ra, double dec )</function>: Центрирует экран на переданные в качестве аргумента экваториальные координаты. </para></listitem>
<listitem><para><function> setAltAz(double alt, double az)</function>: Центрирует экран на переданные в качестве аргумента горизонтальные координаты. </para></listitem>
<listitem><para><function> zoomIn()</function>: Увеличивает изображение. </para></listitem>
<listitem><para><function> zoomOut()</function>: Уменьшает изображение. </para></listitem>
<listitem><para><function> defaultZoom()</function>: Устанавливает уровень увеличения = 3 (уровень по умолчанию). </para></listitem>
<listitem><para><function> setLocalTime(int yr, int mth, int day, int hr, int min, int sec)</function>: Устанавливает определённую дату и время. </para></listitem>
<listitem><para><function> waitFor( double t )</function>: Приостанавливает выполнение сценария на t секунд. </para></listitem>
<listitem><para><function> waitForKey( const QString k )</function>: Приостанавливает выполнение сценария до тех пор, пока не будет нажата определённая клавиша. С помощью этой функции вы не можете определить комбинации клавиш (таких как <keycombo action="simul">&Ctrl;<keycap>C</keycap></keycombo>); используйте простые клавиши. Укажите <quote>space</quote> чтобы определить пробел. </para></listitem>
<listitem><para><function> setTracking( bool track )</function>: Включить трассировку. </para></listitem>
<listitem><para><function> changeViewOption( const QString option, const QString value )</function>: Изменить параметр вида. Доступно множество параметров; всё что можно изменить в окне <guilabel>Настроить &kstars;</guilabel> может быть также изменено с помощью этой функции. Первый аргумент - название параметра (названия совпадают с названиями в конфигурационном файле <filename>kstarsrc</filename>), второй аргумент - новое значение. Если вы случайно введёте неправильноле значение, программа завершиться с ошибкой. </para></listitem>
<listitem><para><function> setGeoLocation( const QString city, const QString province, const QString country )</function>: Изменить географическое местоположение на заданный город. Если такого города нет в базе данных, то ничего не произойдёт. </para></listitem>
<listitem><para><function> stop()</function> [clock]: Остановить "часы" симуляции. </para></listitem>
<listitem><para><function> start()</function> [clock]: Запустить "часы" симуляции. </para></listitem>
<listitem><para><function> setScale(float s)</function> [clock]: Установить скорость "часов" симуляции. s=1.0 соответствует реальному течению времени; 2.0 в два раза быстрее, и т.д. </para></listitem>
</itemizedlist>
</para>
</sect1>
<sect1 id="dcop-test">
<title>Тестирование функций DCOP</title>
<para>Вы можете вызвать функцию DCOP использую программу <application>kdcop</application>. Когда вы запустите <application>kdcop</application>, то увидите список всех запущенных приложений; если &kstars; запущен, то увидите и его. Большинство функций <abbrev>DCOP</abbrev> будут выведены под заголовком <quote>KStarsInterface</quote>, но функции, связанные с часами, будут под заголовком <quote>clock</quote>. Дважды щёлкните мышью на названии функции, чтобы выполнить её. Если функция требует параметров, то откроется окно, где вам предложат ввести них. </para>
</sect1>
<sect1 id="dcop-script">
<title>Написание DCOP-сценария</title>
<para>Функции <abbrev>DCOP</abbrev> могут быть вызваны и из командной строки UNIX, и также могут быть встроены в сценарий командной оболочки. Мы привели пример сценария, который переключается в экваториальные координаты, центрируется на Луну, немного увеличивает её и ускоряет часы до 1 часа в секунду. После слежения за Луной в течении 20 секунд, часы останавливаются, и изображение уменьшается. Вы можете использовать этот сценарий как шаблон для написанию других. Сначала приведём листинг этого сценария, а после объясним его отдельные части. </para>
<para>
<programlisting>#!/bin/bash
#Сценарий KStars: Следим за Луной!
#
KSTARS=`dcopfind -a 'kstars*'`
MAIN=KStarsInterface
CLOCK=clock#1
dcop $KSTARS $MAIN changeViewOption UseAltAz false
dcop $KSTARS $MAIN lookTowards Moon
dcop $KSTARS $MAIN defaultZoom
dcop $KSTARS $MAIN zoomIn
dcop $KSTARS $MAIN zoomIn
dcop $KSTARS $MAIN zoomIn
dcop $KSTARS $MAIN zoomIn
dcop $KSTARS $MAIN zoomIn
dcop $KSTARS $CLOCK setScale 3600.
dcop $KSTARS $CLOCK start
dcop $KSTARS $MAIN waitFor 20.
dcop $KSTARS $CLOCK stop
dcop $KSTARS $MAIN defaultZoom
##
</programlisting>
</para>
<para>Сохраните этот сценарий в файл с любым именем, которое вам нравится; я предлагаю использовать что-то информативное, например <filename>trackmoon.kstars</filename>. Выполните следующие команды, чтобы сделать сценарий исполняемым: <userinput><command>chmod</command> <option>a+x</option> <parameter>trackmoon.kstars</parameter> </userinput>. Сценарий будет выполнятся после команды <userinput><command>./trackmoon.kstars</command></userinput> выполненной в каталоге, который содержит этот сценарий. Помните, что сценарий будет выполняться, только если &kstars; уже запущен. Вы можете использовать в сценарии команду <command>dcopstart</command> чтобы запустить новый экземпляр &kstars;. </para>
<para>А теперь объяснение сценария. Первая строка определяет файл как сценарий командной оболочки <command>BASH</command>. Следующие две строки <firstterm>комментарии</firstterm> (любая строка, начинающаяся со знака <quote>#</quote> - комментарий, и будет пропущена интерпретатором). Следующие три строки определяют некоторые удобные переменные, которые будут использованы далее. Переменная <varname>KSTARS</varname> определяет идентификатор текущего процесса &kstars; используя команду <command>dcopfind</command>. <varname>MAIN</varname> и <varname>CLOCK</varname> определяют два интерфейса <abbrev>DCOP</abbrev> связанных с &kstars;. </para>
<para>Оставшиеся строки - непосредственные вызовы функций <abbrev>DCOP</abbrev>. Первая команда устанавливает отображение в экваториальных координатах, устанавливая опцию <quote>UseAltAz</quote> в <quote>false</quote> (вы можете увидеть все опции, которые использует <quote>changeViewOption</quote> в конфигурационном файле <filename>kstarsrc</filename>). Следующая команда центрирует экран на Луну, и автоматически начинается слежение. После этого мы устанавливаем уровень увеличения по умолчанию, и затем увеличиваем изображение в пять раз. Далее увеличиваем скорость хода часов до 1 часа в секунду (3600 секунд - один час), и запускаем часы (если они не были запущены до этого). Следующая команда приостанавливает исполнение сценария на 20 секунд, пока мы наблюдаем, как Луна движется по небу. И, наконец, мы останавливаем часы и устанавливаем уровень увеличения по умолчанию. </para>
<para>Мы надеемся что вы рады возможностям написания сценариев в &kstars;. Если вы создали интересный сценарий, пожалуйста, отправьте его на <email>kstars@30doradus.org</email>; мы посмотрим, что он делает, и опубликуем некоторые на нашей веб-странице. Если у вас есть идеи по улучшению языка сценариев (или любой другой части &kstars;), сообщите нам по адресу <email>kstars-devel@lists.sourceforge.net</email>, или в wishlist на bugzilla. </para>
</sect1>
</chapter>