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.
249 lines
9.9 KiB
249 lines
9.9 KiB
<chapter id="dcop">
|
|
<title
|
|
>Programar com o KStars: A Interface de DCOP</title>
|
|
<para
|
|
>Um dos objectivos do &kstars; é possibilitar a capacidade de reproduzir comportamentos complicados num programa. Isto permitir-lhe-á criar <quote
|
|
>viagens virtuais</quote
|
|
> aos céus, e permitirá aos professores construírem demonstrações para aulas de modo a ilustrar certos conceitos astronómicos. Já é possível criar esses programas ('scripts') para o &kstars;, ainda que nem todas as funções desejadas tenham sido incluídas. Também, embora tenhamos eventualmente um construtor de 'scripts' gráfico, os programas poderão precisar de ser feitos à mão. Este capítulo irá explicar como criar esses 'scripts' do &kstars;. </para>
|
|
<para
|
|
>A arquitectura do &kde; fornece a plataforma necessária para as aplicações programáveis com a interface do <abbrev
|
|
>DCOP</abbrev
|
|
>. O <abbrev
|
|
>DCOP</abbrev
|
|
> significa <quote
|
|
>Desktop Communication Protocol</quote
|
|
>; através do <abbrev
|
|
>DCOP</abbrev
|
|
>, as aplicações do &kde; poderão ser controladas por outras aplicações, a partir de uma linha de comandos de terminal ou através de um ficheiro de texto. </para>
|
|
|
|
<sect1 id="dcop-interface">
|
|
<title
|
|
>Funções DCOP</title>
|
|
<para
|
|
>A interface de <abbrev
|
|
>DCOP</abbrev
|
|
> do &kstars; inclui as seguintes funções: <itemizedlist>
|
|
<listitem
|
|
><para
|
|
><function
|
|
> lookTowards( const QString direccao )</function
|
|
>: Aponta o foco da visualização para uma direcção indicada pelo argumento. Este poderá ser o nome de qualquer objecto no céu ou uma das palavras de direcção: 'zenith' - zénite (ou 'z'), 'north' - norte ('n'), 'northeast' - nordeste (ne), 'east' - este ('e'), 'southeast' - sueste ('se'), 'south' - sul ('s'), 'southwest' - sudoeste ('sw'), 'west' - oeste ('w'), 'northwest' - noroeste ('nw'). </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> setRaDec( double ar, double dec )</function
|
|
>: Aponta o foco da visualização para as coordenadas equatoriais indicadas. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> setAltAz(double alt, double az)</function
|
|
>: Aponta o foco da visualização para as coordenadas horizontais indicadas. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> zoomIn()</function
|
|
>: Aumentar o nível de ampliação do ecrã. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> zoomOut()</function
|
|
>: Diminuir o nível de ampliação do ecrã. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> defaultZoom()</function
|
|
>: Repõe a visualização no nível de Zoom = 3 (o nível por omissão). </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> setLocalTime(int ano, int mes, int dia, int hr, int min, int seg)</function
|
|
>: Configura o relógio da simulação para a data e hora indicadas. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> waitFor( double t )</function
|
|
>: Pára durante 't' segundos antes de continuar com os comandos subsequentes do programa. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> waitForKey( const QString t )</function
|
|
>: Pára a execução do programa até que o utilizador carregue na tecla indicada. Nesta altura, você não poderá indicar combinações de teclas (como o <keycombo action="simul"
|
|
>&Ctrl;<keycap
|
|
>C</keycap
|
|
></keycombo
|
|
>); use apenas teclas simples. Você poderá escrever <quote
|
|
>space</quote
|
|
> para indicar a barra de espaços. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> setTracking( bool seguir )</function
|
|
>: Indica se o modo de seguimento está activo ou não. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> changeViewOption( const QString opcao, const QString valor )</function
|
|
>: Ajusta uma opção de visualização. Existem dezenas de opções disponíveis; basicamente tudo o que você poderá alterar na <guilabel
|
|
>Configurar a Janela do &kstars;</guilabel
|
|
> poderá também aqui ser alterado. O primeiro argumento é o nome da opção (os nomes são extraídos a partir do ficheiro de configuração <filename
|
|
>kstarsrc</filename
|
|
>) e o segundo argumento é o valor desejado. O processador dos argumentos está desenhado para ser robusto, por isso se você lhe passar dados inválidos, ele irá falhar de forma ordeira. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> setGeoLocation( const QString cidade, const QString provincia, const QString pais )</function
|
|
>: Muda a localização de observação para a cidade indicada. Se não existir nenhuma cidade que corresponda ao texto dos argumentos, então não acontecerá nada. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> stop()</function
|
|
> [relógio]: Pára o relógio da simulação. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> start()</function
|
|
> [relógio]: Inicia o relógio da simulação. </para
|
|
></listitem>
|
|
|
|
<listitem
|
|
><para
|
|
><function
|
|
> setScale(float esc)</function
|
|
> [relógio]: Configura a taxa do relógio de simulação. O esc=1,0 significa tempo-real; o 2,0 é duas vezes mais rápido que o tempo-real, etc. </para
|
|
></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect1>
|
|
|
|
<sect1 id="dcop-test">
|
|
<title
|
|
>Testar as Funções do DCOP</title>
|
|
<para
|
|
>Você poderá tentar as funções de DCOP muito facilmente com o programa <application
|
|
>kdcop</application
|
|
>. Quando você correr o <application
|
|
>kdcop</application
|
|
>, irá ver uma árvore com todos os programas em execução; se o &kstars; estiver a correr, ele aparecerá na lista. A maioria das funções do <abbrev
|
|
>DCOP</abbrev
|
|
> estão enumeradas no cabeçalho <quote
|
|
>KStarsInterface</quote
|
|
>, mas as funções do relógio estão definidas em <quote
|
|
>clock</quote
|
|
>. Se fizer duplo-click numa função qualquer, irá executá-la. Se a função precisar de argumentos, irá aparecer uma janela na qual poderá introduzir os valores. </para>
|
|
</sect1>
|
|
|
|
<sect1 id="dcop-script">
|
|
<title
|
|
>Criar um Programa de DCOP</title>
|
|
<para
|
|
>As funções do <abbrev
|
|
>DCOP</abbrev
|
|
> também podem ser invocadas a partir da linha de comandos do UNIX e estas poderão ser encapsuladas num programa. Iremos criar um programa de exemplo que muda para coordenadas equatoriais, aponta a visualização para a Lua, amplia um pouco e acelera o relógio para uma hora por segundo. Depois de seguir a Lua durante 20 segundos, o relógio é posto em pausa e a visualização reduz a ampliação. Você poderá usar este programa como um modelo para criar novos programas. Tentaremos listar o programa inteiro primeiro e depois explicar as suas várias componentes. </para>
|
|
<para>
|
|
<programlisting
|
|
>#!/bin/bash
|
|
#Programa do KStars: Seguir a Lua!
|
|
#
|
|
KSTARS=`dcopfind -a 'kstars*'`
|
|
PRINCIPAL=KStarsInterface
|
|
RELOGIO=relógio#1
|
|
dcop $KSTARS $PRINCIPAL changeViewOption UseAltAz false
|
|
dcop $KSTARS $PRINCIPAL lookTowards Moon
|
|
dcop $KSTARS $PRINCIPAL defaultZoom
|
|
dcop $KSTARS $PRINCIPAL zoomIn
|
|
dcop $KSTARS $PRINCIPAL zoomIn
|
|
dcop $KSTARS $PRINCIPAL zoomIn
|
|
dcop $KSTARS $PRINCIPAL zoomIn
|
|
dcop $KSTARS $PRINCIPAL zoomIn
|
|
dcop $KSTARS $RELOGIO setScale 3600.
|
|
dcop $KSTARS $RELOGIO start
|
|
dcop $KSTARS $PRINCIPAL waitFor 20.
|
|
dcop $KSTARS $RELOGIO stop
|
|
dcop $KSTARS $PRINCIPAL defaultZoom
|
|
##
|
|
</programlisting>
|
|
</para>
|
|
<para
|
|
>Grave este programa num ficheiro. O ficheiro poderá ter o nome que você desejar; nós sugerimos algo descritivo do tipo <filename
|
|
>seguir_lua.kstars</filename
|
|
>. Escreva então o seguinte comando para colocar o programa como executável: <userinput
|
|
><command
|
|
>chmod</command
|
|
> <option
|
|
>a+x</option
|
|
> <parameter
|
|
>seguir_lua.kstars</parameter
|
|
> </userinput
|
|
>. O programa poderá então ser executado em qualquer altura se escrever <userinput
|
|
><command
|
|
>./seguir_lua.kstars</command
|
|
></userinput
|
|
> na pasta que contém o programa. Tenha em atenção que o programa só irá funcionar se você tiver uma instância do &kstars; já em execução. Você poderá usar o comando <command
|
|
>dcopstart</command
|
|
> num programa para lançar uma nova instância do &kstars;. </para>
|
|
<para
|
|
>Agora, a explicação do programa. A linha de topo identifica o ficheiro como um programa da linha de comandos <command
|
|
>BASH</command
|
|
>. As duas linhas seguintes são <firstterm
|
|
>comentários</firstterm
|
|
> (qualquer linha que comece por <quote
|
|
>#</quote
|
|
> é um comentário e é ignorado pela linha de comandos). As três linhas seguintes definem algumas variáveis de conveniência que serão usadas posteriormente. A variável <varname
|
|
>KSTARS</varname
|
|
> identifica o processo do &kstars; actualmente em execução, usando o comando <command
|
|
>dcopfind</command
|
|
>. O <varname
|
|
>PRINCIPAL</varname
|
|
> e o <varname
|
|
>RELOGIO</varname
|
|
> identificam as duas interfaces de <abbrev
|
|
>DCOP</abbrev
|
|
> associadas ao &kstars;. </para>
|
|
<para
|
|
>O resto do programa é a lista efectiva de chamadas de <abbrev
|
|
>DCOP</abbrev
|
|
>. O primeiro comando indica à visualização para usar as coordenadas equatoriais, usando a opção <quote
|
|
>UseAltAz</quote
|
|
> igual a <quote
|
|
>false</quote
|
|
> (mais uma vez, você poderá ver uma lista com todas as opções que o <quote
|
|
>changeViewOption</quote
|
|
> poderá usar se ver o seu ficheiro de configuração <filename
|
|
>kstarsrc</filename
|
|
>). O próximo comando centra a visualização na Lua, activando automaticamente o seu seguimento. É então definido o nível de zoom por omissão, seguido então de uma ampliação para 5x. De seguida, a a escala temporal do relógio é configurada para 1 hora por segundo (3 600 segundos é uma hora), dando início depois ao relógio (se não estiver já a correr). A próxima linha interrompe o programa durante 20 segundos, enquanto a Lua é seguida à medida que se mexe no céu. Finalmente, o relógio é parado e o nível de ampliação é reposto no seu valor original. </para>
|
|
<para
|
|
>Esperamos que você goste das capacidades de programação do KStars. Se você criar um programa interessante, por favor envie-nos por e-mail para <email
|
|
>kstars@30doradus.org</email
|
|
>; nós gostaríamos de ver o que você fez e poder publicar alguns programas na nossa página Web. Também, se você tiver algumas ideias sobre como melhorar a programação (ou qualquer parte do &kstars;), por favor comunique-nos isso em <email
|
|
>kstars-devel@lists.sourceforge.net</email
|
|
> ou submeta um item de desejo no 'bugzilla'. </para>
|
|
</sect1>
|
|
</chapter>
|
|
|