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.
245 lines
9.5 KiB
245 lines
9.5 KiB
13 years ago
|
<chapter id="dcop">
|
||
|
<title
|
||
|
>Fer scripts amb KStars: La interfície per a DCOP</title>
|
||
|
<para
|
||
|
>Un dels objectius de &kstars; és el proveir la capacitat dels comportaments complicats des d'un script. Això us permetrà crear <quote
|
||
|
>viatges virtuals</quote
|
||
|
> entre el cel i li permetrà als profesors construir presentacions educatives per a il·lustrar certs conceptes astronòmics. Ja és possible escriure dits scripts per a &kstars;, tot i que encara no s'han inclòs totes les funcions desitjades. També, mentre que tinguem una eina basa en IGU per a construir els scripts, aquests s'hauran d'escriure eventualment a mà. Aquest capitol explicarà com escriure scripts &kstars;. </para>
|
||
|
<para
|
||
|
>L'arquitectura &kde; proveeix l'entorn necessari per a scripts d'aplicacions mitjançant la interfície <abbrev
|
||
|
>DCOP</abbrev
|
||
|
>. Aquesta és el pedestal per al <quote
|
||
|
>protocol de comunicació a l'escriptori (Desktop Communication Protocol)</quote
|
||
|
>, les aplicacions &kde; poden ser controlades per d'altres aplicacions, des d'un indicatiu de terminal o a través d'un script de text. </para>
|
||
|
|
||
|
<sect1 id="dcop-interface">
|
||
|
<title
|
||
|
>Funcions DCOP</title>
|
||
|
<para
|
||
|
>La interfície <abbrev
|
||
|
>DCOP</abbrev
|
||
|
> de &kstars; inclou les següents funcions: <itemizedlist>
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> lookTowards( const QString direcció )</function
|
||
|
>: Apunta la vista del focus en una direcció especificada per l'argument. Aquest pot ser el nom d'un objecte en el cel o una de les següents paraules (o abreviacions) direccionals: 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 ar, double dec )</function
|
||
|
>: Apunta la vista del focus cap a les coordenades equatorials especificades. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> setAltAz(double alt, double az)</function
|
||
|
>: Apunta la vista del focus cap a les coordenades horitzontals especificades. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> zoomIn()</function
|
||
|
>: Incrementa el nivell d'apropament de la vista. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> zoomOut()</function
|
||
|
>: Decrementa el nivell d'apropament de la vista. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> defaultZoom()</function
|
||
|
>: Reinicia la vista al nivell = 3 d'apropament (per omissió). </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> setLocalTime(int any, int mes, int dia, int hora, int minut, int segon)</function
|
||
|
>: Estableix el rellotge de simulació a la data i hora especificades. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> waitFor( double t )</function
|
||
|
>: Pausa durant t segons abans de continuar amb els subsegüents comandaments a l'script. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> waitForKey( const QString k )</function
|
||
|
>: Atura l'execució de l'script fins que l'usuari premi la tecla especificada. En aquest punt, no podreu especificar uns combinació de tecles (tals com <keycombo action="simul"
|
||
|
>&Ctrl;<keycap
|
||
|
>C</keycap
|
||
|
></keycombo
|
||
|
>); sinó emprar tecles simples. Podeu escriure <quote
|
||
|
>space</quote
|
||
|
> per a indicar la barra d'espai. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> setTracking( bool track )</function
|
||
|
>: Permet decidir si el mode de seguiment està en marxa. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> changeViewOption( const QString opció, const QString valor )</function
|
||
|
>: Ajusta una opció de la vista. Hi ha dotzenes i dotzenes d'opcions disponibles; bàsicament tot el que podeu canviar en la finestra <guilabel
|
||
|
>Opcions de la vista</guilabel
|
||
|
> també es poden canviar aquí. El primer argument és el nom de l'opció (els noms es prenen del fitxer de configuració <filename
|
||
|
>kstarsrc</filename
|
||
|
>) i el segon argument és el valor desitjat. L'analitzador d'arguments està dissenyat per a ser robust, de manera que si accidentament li envieu dades errònees ell fallarà amb gràcia. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> setGeoLocation( const QString ciutat, const QString provincia, const QString ciutat )</function
|
||
|
>: Canvia la localització d'observació a la ciutat especificada. Si no es troba cap ciutat que hi cassi, llavores no succeirà res. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> stop()</function
|
||
|
> {rellotge]: Atura el rellotge de simulació. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> start()</function
|
||
|
> [rellotge]: Engega el rellotge de simulació. </para
|
||
|
></listitem>
|
||
|
|
||
|
<listitem
|
||
|
><para
|
||
|
><function
|
||
|
> setScale(float s)</function
|
||
|
> [rellotge]: Estableix el flux del rellotge de simulació. s=1.0 es correspon a temps real; 2.0 és dues vegades el temps real, etc. </para
|
||
|
></listitem>
|
||
|
</itemizedlist>
|
||
|
</para>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="dcop-test">
|
||
|
<title
|
||
|
>Provar les funcions DCOP</title>
|
||
|
<para
|
||
|
>Podeu provar les funcions DCOP molt fàcilment emprant el programa <application
|
||
|
>kdcop</application
|
||
|
>. Quan executeu <application
|
||
|
>kdcop</application
|
||
|
>,veureu una llista en arbre de tots els programes en execució; si &kstars; s'està executant serà llistat. La majoria de les funcions <abbrev
|
||
|
>DCOP</abbrev
|
||
|
> són llistades sota la capçalera <quote
|
||
|
>KStarsInterface</quote
|
||
|
>, però les funcions del rellotge són llistades sota <quote
|
||
|
>clock</quote
|
||
|
>. Doble-clic sobre qualsevol funció per a executar-la. Si la funció requereix arguments, s'obrirà una finestra en la qual podreu entrar dits valors. </para>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="dcop-script">
|
||
|
<title
|
||
|
>Escriure un script DCOP</title>
|
||
|
<para
|
||
|
>Les funcions <abbrev
|
||
|
>DCOP</abbrev
|
||
|
> també es poden cridar des de la línia de comandaments de UNIX i aquestes es poden encapsular en un script. Ara crearem un script d'exemple que canvii a coordenades equatorials, apunti la vista cap a la Lluna, apropi una mica i que acceleri el rellotge a 1 hora per segon. Després de seguir la Lluna durant 20 segons, s'aturarà breument el rellotge i la vista s'allunyarà altra vegada. Podreu usar aquest script com a plantilla per a fer-ne de nous. Primer llistaré l'script sencer per a després explicar-ne les diverses parts. </para>
|
||
|
<para>
|
||
|
<programlisting
|
||
|
>#!/bin/bash
|
||
|
# Script de KStars: Seguir a la Lluna!
|
||
|
#
|
||
|
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
|
||
|
>Desar aquest script a un fitxer. El nom de fitxer pot ser qualsevol cosa al vostre gust, suggereixo quelcom descriptiu com <filename
|
||
|
>seguimentlluna.kstars</filename
|
||
|
>. Llavores escriviu el comandament per a tornar executable a l'script: <userinput
|
||
|
><command
|
||
|
>chmod</command
|
||
|
> <option
|
||
|
>a+x</option
|
||
|
> <parameter
|
||
|
>seguimentlluna.kstars</parameter
|
||
|
></userinput
|
||
|
>. Ara, es podrà executar l'script en qualsevol moment escrivint <userinput
|
||
|
><command
|
||
|
>./trackmoon.kstars</command
|
||
|
></userinput
|
||
|
> a la carpeta que contingui l'script. Tingueu present que aquest tan sols funcionarà si ja s'està executant una instància de &kstars;. Tot i que no exclusivament, en el cas de no ser així podreu emprar el comandament <command
|
||
|
>dcopstart</command
|
||
|
> en un script per a iniciar una nova instància de &kstars;. </para>
|
||
|
<para
|
||
|
>Tot seguit ve la explicació de l'script. La primera línia identifica el fitxer com a un script de <command
|
||
|
>BASH</command
|
||
|
>. Les dues línies següents són <firstterm
|
||
|
>comentaris</firstterm
|
||
|
> (qualsevol línia que comenci per <quote
|
||
|
>#</quote
|
||
|
> és un comentari i aquesta serà ignorada per l'intèrpret de comandaments). Les tres línies següents defineixen algunes variables de la conveniència que siguin emprades més endavant. La variable <varname
|
||
|
>KSTARS</varname
|
||
|
> identifica al procés de &kstars; que s'està executant actualment, usant el comandament <command
|
||
|
>dcopfind</command
|
||
|
>. <varname
|
||
|
>MAIN</varname
|
||
|
> i <varname
|
||
|
>CLOCK</varname
|
||
|
> a dues interfícies <abbrev
|
||
|
>DCOP</abbrev
|
||
|
> associades amb &kstars;. </para>
|
||
|
<para
|
||
|
>La resta de l'script és la llista real de les crides <abbrev
|
||
|
>DCOP</abbrev
|
||
|
>. Els primer joc de comandaments estableix la vista a emprar el sistema de coordenades equatorials establint l'opció <quote
|
||
|
>UseAltAz</quote
|
||
|
> a <quote
|
||
|
>false</quote
|
||
|
> (altra vegada, podreu veure una llista de totes les opcions que <abbrev
|
||
|
>changeViewOption</abbrev
|
||
|
> pot usar examinant el vostre fitxer de configuració <filename
|
||
|
>kstarsrc</filename
|
||
|
>). El següent comandament centra la vista a la Lluna i en comença automàticament el seguiment. Llavores establim el nivell d'apropament per omissió i després apropem cinc vegades. Llavores, s'estableix el calendari del rellotge a 1 hora per segon (3.600 segons són una hora) i s'inicia el rellotge (en el cas de que no estigués ja funcionant). A la següent línia s'atura breument l'script durant 20 segons mentre que seguim la Lluna durant el seu moviment a través del cel. Finalment, parem el rellotge i reajustem el nivell d'apropament al seu valor per omissió. </para>
|
||
|
<para
|
||
|
>Esperem que gaudiu de les capacitats d'escriure scripts de KStars. Si en creeu algun d'interessant, si us plau, envieu-lo per correu electrònic a <email
|
||
|
>kstars@30doradus.org</email
|
||
|
>; voldríem veure el que heu fet i poder afegir alguns scripts a la nostra pàgina web. També, si teniu qualsevol idea per a millorar aquesta qüestió (o qualsevol part de &kstars;), feu-nos-ho saber en <email
|
||
|
>kstars-devel@lists.sourceforge.net</email
|
||
|
> o informant d'un error «wihslist» al bugzilla. </para>
|
||
|
</sect1>
|
||
|
</chapter>
|
||
|
|