1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
|
<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
>[email protected]</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
>[email protected]</email
> o informant d'un error «wihslist» al bugzilla. </para>
</sect1>
</chapter>
|