~ubuntu-branches/ubuntu/natty/kde-l10n-pt/natty-proposed

« back to all changes in this revision

Viewing changes to docs/kdebase/ksplashml/index.docbook

  • Committer: Bazaar Package Importer
  • Author(s): Harald Sitter
  • Date: 2010-09-02 12:03:13 UTC
  • mfrom: (1.1.32 upstream)
  • Revision ID: james.westby@ubuntu.com-20100902120313-emsl4fjwscjziiqo
Tags: 4:4.5.1-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?xml version="1.0" ?>
2
 
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
3
 
  <!ENTITY kappname "&ksplash;">
4
 
  <!ENTITY package "kdebase">
5
 
  <!ENTITY % addindex "IGNORE">
6
 
  <!ENTITY % Portuguese "INCLUDE">
7
 
]>
8
 
 
9
 
<book lang="&language;">
10
 
 
11
 
<bookinfo>
12
 
<title
13
 
>O Manual do &ksplash;</title>
14
 
 
15
 
<authorgroup>
16
 
<author
17
 
>&Teemu.Rytilahti; &Teemu.Rytilahti.mail; </author>
18
 
 
19
 
<othercredit role="developer"
20
 
>&Brian.C.Ledbetter; &Brian.C.Ledbetter.mail; </othercredit>
21
 
 
22
 
<othercredit role="developer"
23
 
>&Ravikiran.Rajagopal; &Ravikiran.Rajagopal.mail; </othercredit>
24
 
 
25
 
<othercredit role="translator"
26
 
><firstname
27
 
>José</firstname
28
 
><surname
29
 
>Pires</surname
30
 
><affiliation
31
 
><address
32
 
><email
33
 
>zepires@gmail.com</email
34
 
></address
35
 
></affiliation
36
 
><contrib
37
 
>Tradução</contrib
38
 
></othercredit
39
 
40
 
 
41
 
</authorgroup>
42
 
 
43
 
<copyright>
44
 
<year
45
 
>2003</year>
46
 
<holder
47
 
>Teemu Rytilahti</holder>
48
 
</copyright>
49
 
<copyright>
50
 
<year
51
 
>2003-04</year>
52
 
<holder
53
 
>Ravikiran Rajagopal</holder>
54
 
</copyright>
55
 
<legalnotice
56
 
>&FDLNotice;</legalnotice>
57
 
 
58
 
<date
59
 
>2003-01-10</date>
60
 
<releaseinfo
61
 
>1.01.00</releaseinfo>
62
 
 
63
 
<abstract>
64
 
<para
65
 
>O &ksplash; é um ecrã inicial bonito que mostra o progresso de uma aplicação que está a ser carregada.</para>
66
 
</abstract>
67
 
 
68
 
<keywordset>
69
 
<keyword
70
 
>KDE</keyword>
71
 
<keyword
72
 
>kdebase</keyword>
73
 
<keyword
74
 
>ksplash</keyword>
75
 
<keyword
76
 
>ksplashml</keyword>
77
 
<keyword
78
 
>ecrã inicial</keyword>
79
 
<keyword
80
 
>belezas visuais</keyword>
81
 
</keywordset>
82
 
 
83
 
</bookinfo>
84
 
 
85
 
<chapter id="introduction">
86
 
<title
87
 
>Introdução</title>
88
 
 
89
 
<para
90
 
>O &ksplash; é um ecrã inicial bonito que mostra o progresso de uma aplicação que está a ser carregada. Por favor comunique quaisquer problemas ou pedidos de funcionalidades às listas de correio do &kde;. As principais funcionalidades do &ksplash; são: </para>
91
 
<simplelist>
92
 
<member
93
 
>Temas Configuráveis</member>
94
 
<member
95
 
>Utiliza 'plugins' para uma personalização completa</member>
96
 
<member
97
 
>Pode ser usado por qualquer aplicação que utilize o DCOP</member>
98
 
</simplelist>
99
 
 
100
 
<para
101
 
>Este manual mostrar-lhe-á como criar temas para usar com os 'plugins' que já estão disponíveis. Se nenhum dos 'plugins' disponíveis satisfaz o seu gosto, você poderá aprender como personalizar a aparência do &ksplash; por completo ao criar um 'plugin' em C++. </para>
102
 
</chapter>
103
 
 
104
 
<chapter id="using-themes">
105
 
<title
106
 
>Usar os temas</title>
107
 
 
108
 
<para
109
 
>Para usar os temas do <ulink url="http://www.kde-look.org"
110
 
>KDE-Look</ulink
111
 
>, extraia-os para a pasta <filename
112
 
>~/.kde/share/apps/ksplash/Themes/</filename
113
 
> para um único utilizador, ou para a <filename
114
 
>$<envar
115
 
>KDEDIR</envar
116
 
>/share/apps/ksplash/Themes/</filename
117
 
> para os tornar disponíveis para todos os utilizadores do seu sistema.</para>
118
 
 
119
 
<para
120
 
>Você também poderá usar o módulo <guilabel
121
 
>Ecrã Inicial</guilabel
122
 
> da <guilabel
123
 
>Aparência</guilabel
124
 
> no centro de controlo do &kde; para fazer isto automaticamente.</para>
125
 
 
126
 
<sect1 id="using-kcontrol-module">
127
 
<title
128
 
>Utilizar o Módulo do &kcontrol;</title>
129
 
 
130
 
<para
131
 
>Este módulo permite-lhe instalar, testar e remover temas do &ksplash;.</para>
132
 
 
133
 
<para
134
 
>Ao lado do módulo existe uma lista com os temas disponíveis de momento para o &ksplash;. Quando seleccionar um, irá aparecer uma antevisão na área principal da janela. Quando tiver seleccionado o item que deseja usar, carregue em <guibutton
135
 
>OK</guibutton
136
 
> ou em <guibutton
137
 
>Aplicar</guibutton
138
 
>. Carregue em <guibutton
139
 
>Cancelar</guibutton
140
 
> para sair do módulo sem ter feito nenhuma alteração ou em <guibutton
141
 
>Predefinições</guibutton
142
 
> para repor o ecrã inicial por omissão do sistema.</para>
143
 
 
144
 
<para
145
 
>Para instalar novos módulos, carregue em <guibutton
146
 
>Adicionar...</guibutton
147
 
> e procure o tema no seu computador. Você não terá de descomprimir os ficheiros dos temas; poderá seleccionar sem problemas o ficheiro de tema comprimido. Se instalar um tema não o torna o tema por omissão, até que você o seleccione na lista e carregue em <guibutton
148
 
>OK</guibutton
149
 
> ou em <guibutton
150
 
>Aplicar</guibutton
151
 
>.</para>
152
 
 
153
 
<para
154
 
>Ainda que você possa ver uma antevisão do ecrã inicial, você poderá querer ver como é que ele funciona realmente, por exemplo para ver como é que fica a animação. Você poderá testar os temas se os seleccionar na lista e carregar em <guibutton
155
 
>Testar</guibutton
156
 
>.</para>
157
 
 
158
 
<para
159
 
>Você também poderá remover os temas que não deseja mais usar, se os seleccionar e carregar em <guibutton
160
 
>Remover</guibutton
161
 
>. Lembre-se que a sua conta de utilizador poderá não ter permissões para remover os temas instalados ao nível do sistema. Também é recomendado que não desinstale o ecrã inicial <guilabel
162
 
>Por omissão</guilabel
163
 
>.</para>
164
 
 
165
 
</sect1>
166
 
 
167
 
</chapter>
168
 
 
169
 
<chapter id="themes">
170
 
<title
171
 
>Como criar temas para o &ksplash;</title>
172
 
<sect1 id="themes-general">
173
 
<title
174
 
>Geral</title>
175
 
<para
176
 
>Criar os seus próprios temas do &ksplash; é simples. Depois de você ter terminado os seus temas poderá publicá-los no <ulink url="http://www.kde-look.org"
177
 
>KDE-Look</ulink
178
 
> para que as outras pessoas os possam usar.</para>
179
 
 
180
 
<sect2 id="theme-syntax">
181
 
<title
182
 
>Identificar o seu tema</title>
183
 
 
184
 
<para
185
 
>Vamos então criar um tema chamado <literal
186
 
>OMeuTemaFixe</literal
187
 
>. Para o tema ser reconhecido pelo &ksplash;, deverá ser guardado numa pasta chamada <filename class="directory"
188
 
>OMeuTemaFixe</filename
189
 
> em <filename class="directory"
190
 
>~/.kde/apps/ksplash/Themes/</filename
191
 
>. Deverá ter um ficheiro chamado <filename
192
 
>Theme.rc</filename
193
 
>, o qual contém a configuração do tema. Você poderá indicar várias coisas especiais para o tema, alterar o motor do 'plugin' a usar, e assim por diante. Você não terá de usar todas as configurações disponíveis; normalmente, as configurações têm valores por omissão aceitáveis. A sintaxe básica dos itens no ficheiro <filename
194
 
>Theme.rc</filename
195
 
> é <literal
196
 
>[opção] = [valor]</literal
197
 
> Você poderá encontrar as definições das várias opções nas seguintes secções.</para>
198
 
 
199
 
<example>
200
 
<title
201
 
>Ficheiro <filename
202
 
>Theme.rc</filename
203
 
> simples</title>
204
 
<programlisting
205
 
>[Tema do KSplash: OMeuTemaFixe]
206
 
Name = OMeuTemaFixe
207
 
Description = Um tema giro usando um motor do tipo XP
208
 
Version = 1.0
209
 
Author = Nome Verdadeiro &lt;nomeverdadeiro@mail.com&gt;
210
 
## Usar o motor XpLike para este tema.
211
 
Engine = XpLike
212
 
Show Icon = false
213
 
Welcome Text = A carregar o KDE
214
 
</programlisting>
215
 
</example>
216
 
 
217
 
<para
218
 
>Depois de indicar o nome, a descrição e o autor do tema, você deverá escolher primeiro um motor de temas (também conhecido por 'plugin'). A partir daí, você poderá personalizar várias funcionalidades do motor do tema ao atribuir pares (chave, valor) como no ficheiro de exemplo em cima.</para>
219
 
 
220
 
<para
221
 
>Garanta que o nome da pasta onde os ficheiros dos temas são gravados (<filename class="directory"
222
 
>~/.kde/apps/ksplash/Themes/OMeuTemaFixe</filename
223
 
> no nosso caso) e o identificador (<literal
224
 
>[Tema do KSplash: OMeuTemaFixe] </literal
225
 
>, também no nosso caso) do tema no ficheiro <filename
226
 
>Theme.rc</filename
227
 
> sejam idênticos. Caso contrário, o &ksplash; não irá reconhecer o tema. </para>
228
 
 
229
 
</sect2>
230
 
 
231
 
<sect2 id="theme-files">
232
 
<title
233
 
>Ficheiros com fundos</title>
234
 
 
235
 
<para
236
 
>Quando o &ksplash; se inicia, ele tenta procurar uma imagem de fundo para a sua resolução de ecrã actual, se o motor do tema usar uma. O ficheiro com a imagem de fundo deverá ter um nome com o seguinte formato: <filename
237
 
>Background-<replaceable
238
 
>LLLxAAA</replaceable
239
 
>.png</filename
240
 
>, com o LLL sendo a largura em pixels e o AAA, a altura..</para>
241
 
 
242
 
<para
243
 
>Por exemplo, você poderá usar um ficheiro chamado <filename
244
 
>Background-1024x768</filename
245
 
>. Se a imagem de fundo para a sua resolução não puder ser encontrada, ele tentará redimensionar o ficheiro original <filename
246
 
>Background.png</filename
247
 
> ou o ficheiro indicado no <filename
248
 
>Theme.rc</filename
249
 
> para se adequar à resolução actual. O redimensionamento imediato poderá levar algum tempo, como tal você deverá fornecer imagens de fundo para, pelo menos, os seguintes tamanhos: 1280x1024, 1024x768 e 800x600.</para>
250
 
</sect2>
251
 
</sect1>
252
 
 
253
 
<sect1 id="theme-engines">
254
 
<title
255
 
>Opções para os Motores de Temas</title>
256
 
 
257
 
<sect2 id="standard-themes">
258
 
<title
259
 
>Tema Padrão</title>
260
 
<table>
261
 
<title
262
 
>Opções do Tema Padrão</title>
263
 
<tgroup cols="3">
264
 
<tbody>
265
 
<row>
266
 
<entry
267
 
>Nome</entry>
268
 
<entry
269
 
>Argumento</entry>
270
 
<entry
271
 
>Explicação</entry>
272
 
</row>
273
 
<!-- Statusbar -->
274
 
<row>
275
 
<entry
276
 
>Posição da Barra de Estado</entry>
277
 
<entry
278
 
>[top/bottom]</entry>
279
 
<entry
280
 
>Comuta a posição da barra de estado no ecrã: 'top' (em cima) ou 'bottom' (em baixo). O valor por omissão é o 'bottom'.</entry>
281
 
</row>
282
 
<row>
283
 
<entry
284
 
>Barra de Estado Visível</entry>
285
 
<entry
286
 
>[true/false]</entry>
287
 
<entry
288
 
>Indica se a barra de estado deverá ser mostrada ('true': sim; 'false': não). O valor por omissão é o 'true'.</entry>
289
 
</row>
290
 
<row>
291
 
<entry
292
 
>Progresso Visível</entry>
293
 
<entry
294
 
>[true/false]</entry>
295
 
<entry
296
 
>Indica se o progresso do carregamento deverá ser mostrado ('true': sim; 'false': não). Por omissão é 'true'.</entry>
297
 
</row>
298
 
<!-- Fonts -->
299
 
<row>
300
 
<entry
301
 
>Tipo de Letra da Barra de Estado</entry>
302
 
<entry
303
 
>[nome do tipo de letra]</entry>
304
 
<entry
305
 
>O tipo de letra usado na barra de estado. Por omissão é o Helvetica.</entry>
306
 
</row>
307
 
<row>
308
 
<entry
309
 
>Tamanho da Letra da Barra de Estado</entry>
310
 
<entry
311
 
>[tamanho]</entry>
312
 
<entry
313
 
>O tamanho da letra usado na barra de estado. Por omissão é igual a 16.</entry>
314
 
</row>
315
 
<row>
316
 
<entry
317
 
>Texto Negrito na Barra de Estado</entry>
318
 
<entry
319
 
>[true/false]</entry>
320
 
<entry
321
 
>Indica se o texto da barra de estado deverá aparecer negrito ('true': sim; 'false': não). Por omissão, é igual a 'true'.</entry>
322
 
</row>
323
 
<row>
324
 
<entry
325
 
>Texto Itálico na Barra de Estado</entry>
326
 
<entry
327
 
>[true/false]</entry>
328
 
<entry
329
 
>Indica se o texto da barra de estado deverá aparecer em itálico ('true': sim; 'false': não). Por omissão, é igual a 'false'.</entry>
330
 
</row>
331
 
<!-- Misc. things -->
332
 
<row>
333
 
<entry
334
 
>Cor do Texto da Barra de Estado</entry>
335
 
<entry
336
 
>[cor]</entry>
337
 
<entry
338
 
>A cor do texto na barra de estado. Por omissão é igual a 'white' (branco).</entry>
339
 
</row>
340
 
<row>
341
 
<entry
342
 
>Cor de Fundo da Barra de Estado</entry>
343
 
<entry
344
 
>[cor]</entry>
345
 
<entry
346
 
>A cor de fundo na barra de estado. Por omissão é igual a 'black' (preto).</entry>
347
 
</row>
348
 
<row>
349
 
<entry
350
 
>Ícone da Barra de Estado</entry>
351
 
<entry
352
 
>[true/false]</entry>
353
 
<entry
354
 
>Indica se a barra de estado deverá ter um ícone.</entry>
355
 
</row>
356
 
<row>
357
 
<entry
358
 
>Ícones Visíveis</entry>
359
 
<entry
360
 
>[true/false]</entry>
361
 
<entry
362
 
>Indica se os ícones deverão estar visíveis ('true': sim; 'false': não). Por omissão, está a 'true'.</entry>
363
 
</row>
364
 
<row>
365
 
<entry
366
 
>Ícones Saltitantes</entry>
367
 
<entry
368
 
>[true/false]</entry>
369
 
<entry
370
 
>Indica se os ícones deverão estar intermitentes ('true': sim; 'false': não). Por omissão é igual a 'true'.</entry>
371
 
</row>
372
 
<row>
373
 
<entry
374
 
>Posição do Ícone</entry>
375
 
<entry
376
 
>[0-3,10-13]</entry>
377
 
<entry
378
 
>Posição onde os ícones são mostrados. Por omissão: 'bottom-left' (em baixo, à esquerda).</entry>
379
 
</row>
380
 
<row>
381
 
<entry
382
 
>Ecrã Inicial</entry>
383
 
<entry
384
 
>[nome]</entry>
385
 
<entry
386
 
>Altera imagem do ecrã inicial que é mostrada.</entry>
387
 
</row>
388
 
</tbody>
389
 
</tgroup>
390
 
</table>
391
 
</sect2>
392
 
 
393
 
<sect2 id="redmond-themes">
394
 
<title
395
 
>Tema do Redmond</title>
396
 
<table>
397
 
<title
398
 
>Opções do tema Redmond</title>
399
 
<tgroup cols="3">
400
 
<tbody>
401
 
<row>
402
 
<entry
403
 
>Nome</entry>
404
 
<entry
405
 
>Argumento</entry>
406
 
<entry
407
 
>Explicação</entry>
408
 
</row>
409
 
<!-- Main elements -->
410
 
<row>
411
 
<entry
412
 
>Imagem de Fundo</entry>
413
 
<entry
414
 
>[ficheiro]</entry>
415
 
<entry
416
 
>A imagem de fundo definida pelo utilizador a usar.</entry>
417
 
</row>
418
 
<row>
419
 
<entry
420
 
>Ícone do Utilizador</entry>
421
 
<entry
422
 
>[Nome de ícone]</entry>
423
 
<entry
424
 
>O nome do ícone-padrão a mostrar para o utilizador. Por omissão é o <constant
425
 
>go</constant
426
 
>.</entry>
427
 
</row>
428
 
<row>
429
 
<entry
430
 
>Texto de Boas-Vindas</entry>
431
 
<entry
432
 
>[texto]</entry>
433
 
<entry
434
 
>O texto mostrado no ecrã inicial. Por omissão é "Bem-vindo".</entry>
435
 
</row>
436
 
<row>
437
 
<entry
438
 
>Texto do Nome do Utilizador</entry>
439
 
<entry
440
 
>[texto]</entry>
441
 
<entry
442
 
>O texto que é mostrado em vez do nome verdadeiro do utilizador.</entry>
443
 
</row>
444
 
<!-- Positioning elements -->
445
 
<row>
446
 
<entry
447
 
>Posição do Texto de Boas-Vindas</entry>
448
 
<entry
449
 
>[x,y]</entry>
450
 
<entry
451
 
>A posição no ecrã onde é mostrado o texto de Boas-Vindas.</entry>
452
 
</row>
453
 
<row>
454
 
<entry
455
 
>Posição do Nome do Utilizador</entry>
456
 
<entry
457
 
>[x,y]</entry>
458
 
<entry
459
 
>A posição no ecrã onde é mostrado o nome do utilizador.</entry>
460
 
</row>
461
 
<row>
462
 
<entry
463
 
>Posição do Texto da Acção</entry>
464
 
<entry
465
 
>[x,y]</entry>
466
 
<entry
467
 
>A posição no ecrã onde é mostrada a acção a decorrer.</entry>
468
 
</row>
469
 
<row>
470
 
<entry
471
 
>Posição do Ícone</entry>
472
 
<entry
473
 
>[x,y]</entry>
474
 
<entry
475
 
>A posição no ecrã onde o ícone do utilizador é mostrado.</entry>
476
 
</row>
477
 
<!-- Show to show.. -->
478
 
<row>
479
 
<entry
480
 
>Mostrar o Texto de Boas-Vindas</entry>
481
 
<entry
482
 
>[true/false]</entry>
483
 
<entry
484
 
>Comuta a apresentação do texto de boas-vindas ('true': sim; 'false': não). Por omissão, é igual a 'true'.</entry>
485
 
</row>
486
 
<row>
487
 
<entry
488
 
>Mostrar a Sombra das Boas-Vindas</entry>
489
 
<entry
490
 
>[true/false]</entry>
491
 
<entry
492
 
>Comuta a apresentação do sombreado do texto de boas-vindas ('true': sim; 'false': não). Por omissão, é igual a 'true'.</entry>
493
 
</row>
494
 
<row>
495
 
<entry
496
 
>Mostrar o Nome do Utilizador</entry>
497
 
<entry
498
 
>[true/false]</entry>
499
 
<entry
500
 
>Comuta a apresentação do nome do utilizador ('true': sim; 'false': não). Por omissão é igual a 'true'.</entry>
501
 
</row>
502
 
<row>
503
 
<entry
504
 
>Mostrar a Acção</entry>
505
 
<entry
506
 
>[true/false]</entry>
507
 
<entry
508
 
>Comuta a apresentação da acção que está a ser efectuada de momento ('true': sim; 'false': não). Por omissão é igual a 'true'.</entry>
509
 
</row>
510
 
<row>
511
 
<entry
512
 
>Mostrar o Ícone</entry>
513
 
<entry
514
 
>[true/false]</entry>
515
 
<entry
516
 
>Indica se o ícone deverá ser mostrado ('true': sim; 'false': não). Por omissão, 'true'.</entry>
517
 
</row>
518
 
<row>
519
 
<entry
520
 
>Usar o Ícone do Utilizador do KDM</entry>
521
 
<entry
522
 
>[true/false]</entry>
523
 
<entry
524
 
>Mostra o ícone da autenticação do utilizador ('true': sim; 'false': não). Por omissão, igual a 'true'.</entry>
525
 
</row>
526
 
</tbody>
527
 
</tgroup>
528
 
</table>
529
 
</sect2>
530
 
 
531
 
<sect2 id="macx-themes">
532
 
<title
533
 
>Tema do MacX</title>
534
 
<table>
535
 
<title
536
 
>Opções do Tema MacX</title>
537
 
<tgroup cols="3">
538
 
<tbody>
539
 
<row>
540
 
<entry
541
 
>Nome</entry>
542
 
<entry
543
 
>Argumento</entry>
544
 
<entry
545
 
>Explicação</entry>
546
 
</row>
547
 
<row>
548
 
<entry
549
 
>Tamanho Mínimo dos Ícones</entry>
550
 
<entry
551
 
>[tamanho]</entry>
552
 
<entry
553
 
>Atribui o tamanho mínimo para os ícones. Por omissão, é igual a 16.</entry>
554
 
</row>
555
 
<row>
556
 
<entry
557
 
>Tamanho Máximo dos Ícones</entry>
558
 
<entry
559
 
>[tamanho]</entry>
560
 
<entry
561
 
>Atribui o tamanho máximo para os ícones. O valor por omissão é igual a 64.</entry>
562
 
</row>
563
 
<row>
564
 
<entry
565
 
>Desenho Optimizado dos Ícones</entry>
566
 
<entry
567
 
>[true/false]</entry>
568
 
<entry
569
 
>Optimiza o processo de desenho dos ícones ('true': sim; 'false': não). Por omissão, 'true'.</entry>
570
 
</row>
571
 
<row>
572
 
<entry
573
 
>Barra de Progresso Visível</entry>
574
 
<entry
575
 
>[true/false]</entry>
576
 
<entry
577
 
>Por omissão, igual a 'true' (sim). O outro valor possível será 'false' (não).</entry>
578
 
</row>
579
 
<row>
580
 
<entry
581
 
>Posição da Barra de Progresso</entry>
582
 
<entry
583
 
>[top/bottom]</entry>
584
 
<entry
585
 
>Indica se a barra de estado deverá aparecer em cima ('top') ou em baixo ('bottom'). Por omissão é igual a 'bottom'.</entry>
586
 
</row>
587
 
<row>
588
 
<entry
589
 
>Ícones Saltitantes</entry>
590
 
<entry
591
 
>[true/false]</entry>
592
 
<entry
593
 
>Indica se os ícones deverão estar saltitantes ('true': sim; 'false': não). Por omissão, é igual a 'false'.</entry>
594
 
</row>
595
 
</tbody>
596
 
</tgroup>
597
 
</table>
598
 
</sect2>
599
 
 
600
 
<sect2 id="mac-classic-themes">
601
 
<title
602
 
>Tema MacClassic</title>
603
 
<table>
604
 
<title
605
 
>Opções do Tema MacClassic</title>
606
 
<tgroup cols="3">
607
 
<tbody>
608
 
<row>
609
 
<entry
610
 
>Nome</entry>
611
 
<entry
612
 
>Argumento</entry>
613
 
<entry
614
 
>Explicação</entry>
615
 
</row>
616
 
<row>
617
 
<entry
618
 
>Posição do Ícone</entry>
619
 
<entry
620
 
>[0-3,10-13]</entry>
621
 
<entry
622
 
>A posição dos ícones no ecrã. Por omissão, é igual a 'bottom left' (em baixo, à esquerda).</entry>
623
 
</row>
624
 
<row>
625
 
<entry
626
 
>Ícones Saltitantes</entry>
627
 
<entry
628
 
>[true/false]</entry>
629
 
<entry
630
 
>Indica se os ícones deverão estar saltitantes ('true': sim; 'false': não). Por omissão, é igual a 'false'.</entry>
631
 
</row>
632
 
<row>
633
 
<entry
634
 
>Ícones Visíveis</entry>
635
 
<entry
636
 
>[true/false]</entry>
637
 
<entry
638
 
>Indica se os ícones deverão estar visíveis ('true': sim; 'false': não). Por omissão, está a 'true'.</entry>
639
 
</row>
640
 
<row>
641
 
<entry
642
 
>Ecrã Inicial</entry>
643
 
<entry
644
 
>[nome]</entry>
645
 
<entry
646
 
>Altera imagem do ecrã inicial que é mostrada.</entry>
647
 
</row>
648
 
</tbody>
649
 
</tgroup>
650
 
</table>
651
 
</sect2>
652
 
 
653
 
<sect2 id="themes-2k">
654
 
<title
655
 
>Tema 2k</title>
656
 
<table>
657
 
<title
658
 
>Opções do tema 2k</title>
659
 
<tgroup cols="3">
660
 
<tbody>
661
 
<row>
662
 
<entry
663
 
>Nome</entry>
664
 
<entry
665
 
>Argumento</entry>
666
 
<entry
667
 
>Explicação</entry>
668
 
</row>
669
 
<row>
670
 
<entry
671
 
>Cor de Fundo do Título</entry>
672
 
<entry
673
 
>[cor]</entry>
674
 
<entry
675
 
>A cor de fundo do título. Por omissão é 'dark blue' (azul escuro).</entry>
676
 
</row>
677
 
<row>
678
 
<entry
679
 
>Cor do Texto do Título</entry>
680
 
<entry
681
 
>[cor]</entry>
682
 
<entry
683
 
>A cor do texto do título. Por omissão, é igual a 'white' (branco).</entry>
684
 
</row>
685
 
<row>
686
 
<entry
687
 
>Cor do Texto do Estado</entry>
688
 
<entry
689
 
>[cor]</entry>
690
 
<entry
691
 
>A cor dos textos de estado. Por omissão, é a mesma que a Cor de Fundo do Título.</entry>
692
 
</row>
693
 
<row>
694
 
<entry
695
 
>Cor da Rotação 1</entry>
696
 
<entry
697
 
>[cor]</entry>
698
 
<entry
699
 
>Indica a cor da rotação 1. Por omissão, é igual a 'dark blue' (azul escuro).</entry>
700
 
</row>
701
 
<row>
702
 
<entry
703
 
>Cor da Rotação 2</entry>
704
 
<entry
705
 
>[cor]</entry>
706
 
<entry
707
 
>Indica a cor da rotação 2. Por omissão, é igual a 'cyan' (azul-cião).</entry>
708
 
</row>
709
 
<row>
710
 
<entry
711
 
>Velocidade da Rotação</entry>
712
 
<entry
713
 
>[valor]</entry>
714
 
<entry
715
 
>Define a velocidade da rotação. Por omissão, é igual a 30.</entry>
716
 
</row>
717
 
<row>
718
 
<entry
719
 
>Título da Janela</entry>
720
 
<entry
721
 
>[texto]</entry>
722
 
<entry
723
 
>Indica o texto de título para a janela.</entry>
724
 
</row>
725
 
<row>
726
 
<entry
727
 
>Ficheiro do Logótipo</entry>
728
 
<entry
729
 
>[ficheiro]</entry>
730
 
<entry
731
 
>Define o logotipo a usar.</entry>
732
 
</row>
733
 
</tbody>
734
 
</tgroup>
735
 
</table>
736
 
</sect2>
737
 
</sect1>
738
 
</chapter>
739
 
 
740
 
<chapter id="from-other-applications">
741
 
<title
742
 
>Usar o &ksplash; na sua Própria Aplicação</title>
743
 
 
744
 
<para
745
 
>Neste capítulo, nós descrevemos um método simples para usar o &ksplash; como o ecrã inicial para a sua aplicação do &kde;. Se não você não desenvolve aplicações para o &kde;, poderá ignorar este capítulo.</para>
746
 
 
747
 
<sect1 id="basic-other-reqs">
748
 
<title
749
 
>Requisitos Básicos</title>
750
 
 
751
 
<para
752
 
>A sua aplicação do &kde; deverá lidar com o &DCOP;. O &DCOP; é a tecnologia do &kde; que é usada para comunicar entre as aplicações. Se você usar a <ulink url="http://developer.kde.org"
753
 
>plataforma-padrão de aplicações do &kde;</ulink
754
 
>, isto é realizado automaticamente. Para mais informações sobre o &DCOP; e as tecnologias relacionadas do &kde; vá ao <ulink url="http://developer.kde.org"
755
 
>cantinho dos programadores do &kde;</ulink
756
 
>.</para>
757
 
</sect1>
758
 
 
759
 
<sect1 id="other-using">
760
 
<title
761
 
>Iniciar o &ksplash;</title>
762
 
 
763
 
<para
764
 
>Antes de a sua aplicação iniciar o seu trabalho intensivo, ou antes de começar a carregar os 'plugins', &etc;, invoke o &ksplash; como se mostra a seguir:</para>
765
 
 
766
 
<programlisting
767
 
>DCOPClient *c = kapp-&gt;dcopClient();
768
 
QString erro;
769
 
QCString NomeKSplash;
770
 
int pid = 0;
771
 
QStringList args;
772
 
args &lt;&lt; "--theme=OMeuTemaFixe" &lt;&lt; "--managed";
773
 
if (kapp-&gt;startServiceByDesktopName("ksplash", args, &amp;erro, &amp;NomeKSplash, &amp;pid))
774
 
{
775
 
  KMessageBox::sorry(0, erro, "Não é possível invocar o KSplash");
776
 
  // Algum processamento de erros aqui.
777
 
}
778
 
</programlisting>
779
 
 
780
 
<para
781
 
>Nós iremos assumir que só existe uma instância do &ksplash; a correr. Os outros casos são ligeiramente mais complexos. Por favor, veja a documentação do &DCOP; para mais detalhes.</para>
782
 
</sect1>
783
 
 
784
 
<sect1 id="show-messages">
785
 
<title
786
 
>Mostrar as mensagens</title>
787
 
 
788
 
<para
789
 
>Antes de você poder mostrar quaisquer mensagens, você precisa de configurar o número de passos que irá mostrar. Por exemplo, o procedimento de arranque do &kde; utiliza 7 passos.</para>
790
 
 
791
 
<programlisting
792
 
>QByteArray dados;
793
 
    QDataStream arg(dados,QIODevice::WriteOnly);
794
 
    arg &lt;&lt; umNumero;
795
 
    if (!(c-&gt;send(NomeKSplash, "KSplashIface", "setStartupItemCount(int)", dados))
796
 
      // Algum processamento de erros aqui.
797
 
</programlisting>
798
 
 
799
 
<para
800
 
>Sempre que quiser mostrar uma mensagem com um ícone ou sem nenhum, use</para>
801
 
 
802
 
<programlisting
803
 
>arg &lt;&lt; QString("nomeIcone") &lt;&lt; QString("nomePrograma") &lt;&lt; QString("Uma descrição");
804
 
    if (!(c-&gt;send(NomeKSplash, "KSplashIface", "programStarted(QString,QString,QString)", dados))
805
 
    {
806
 
      // Algum processamento de erros aqui.
807
 
    }
808
 
</programlisting>
809
 
 
810
 
<para
811
 
>De cada vez que você invocar o <constant
812
 
>programStarted</constant
813
 
>, os passos completos são incrementados. Quando o seu programa tiver terminado o seu arranque, faça o seguinte para fazer desaparecer o ecrã inicial:</para>
814
 
 
815
 
<programlisting
816
 
>if (!(c-&gt;send(NomeKSplash, "KSplashIface", "startupComplete()", dados))
817
 
    {
818
 
      // Algum processamento de erros aqui.
819
 
    }
820
 
</programlisting>
821
 
 
822
 
<para
823
 
>Já está! Você não precisa de mais nada para tirar partido de tudo o que o &ksplash; tem para lhe oferecer.</para>
824
 
 
825
 
</sect1>
826
 
</chapter>
827
 
 
828
 
<!-- FIXME: Better to leave this out until it's written, or the translators -->
829
 
<!-- will have to still translate it ... -->
830
 
 
831
 
<chapter id="wrplugins">
832
 
<title
833
 
>Criar novos 'plugins' do &ksplash;</title>
834
 
 
835
 
<para
836
 
>A criação de novos 'plugins' para o &ksplash; não é difícil. Neste capítulo, nós iremos criar um 'plugin' simples que irá emular o ecrã inicial de um sistema operativo bem conhecido. Este tutorial assume que você conhece as bases do C++ e um pouco de programação com o KDE/Qt.</para>
837
 
 
838
 
<sect1 id="basic-requirements">
839
 
<title
840
 
>Requisitos Básicos</title>
841
 
<para
842
 
>Nós iremos criar um 'plugin' chamado <literal
843
 
>2k</literal
844
 
>. O nome do 'plugin' é usado em vários sítios, e é importante que você o use de forma consistente, de modo a que o 'plugin' seja reconhecido pelo &ksplash;. Os 'plugins' do &ksplash; são de factos bibliotecas carregadas dinamicamente com a seguinte convenção de nomes: </para>
845
 
<simplelist>
846
 
<member
847
 
>A biblioteca dever-se-á chamar <filename
848
 
>ksplash+nomedotemaemminúsculas</filename
849
 
>. Para o nosso tema, chamar-se-á <filename
850
 
>ksplash2k</filename
851
 
>.</member>
852
 
<member
853
 
>Deverá ter um ficheiro 'desktop' correspondente com o nome formatado da seguinte forma <filename
854
 
>ksplash+nomedotemaemminúsculas.desktop</filename
855
 
>. Para o nosso tema, será igual a <filename
856
 
>ksplash2k.desktop</filename
857
 
>. </member>
858
 
<member
859
 
>Finalmente, o objecto que é devolvido pela biblioteca deverá ser uma classe chamada <literal
860
 
>Theme+nomedotema</literal
861
 
>. Para o nosso exemplo, será a <literal
862
 
>Theme2k</literal
863
 
>.</member>
864
 
</simplelist>
865
 
<para
866
 
>Não se preocupe com isso se não perceber nada da parte anterior. Nós vamos ter em consideração cada um desses pontos em detalhe mais tarde. O outro detalhe importante é que a classe do 'plugin' deverá ser derivada da classe <literal
867
 
>ThemeEngine</literal
868
 
>. </para>
869
 
</sect1>
870
 
<sect1 id="skeleton">
871
 
<title
872
 
>Criar a plataforma de esqueleto</title>
873
 
<para
874
 
>Nós iremos usar a plataforma de aplicações do &kde;, a qual tomará conta de construir o 'plugin' e que nos irá garantir alguma independência da plataforma, sem nenhum trabalho da nossa parte. Para o fazer, certifique-se que tem o pacote <filename
875
 
>kdesdk</filename
876
 
> instalado. Corra o comando <literal
877
 
>kapptemplate</literal
878
 
> para produzir uma aplicação chamada "2k". Ela irá criar uma pasta de topo que contém alguns ficheiros genéricos como o AUTHORS, &etc;. Nós estamos mais interessados na subpasta chamada <filename class="directory"
879
 
>2k</filename
880
 
>. Vá para essa subpasta e remova todos os ficheiros que lá estejam. A partir de agora, temos o esqueleto que pretendemos. </para>
881
 
<para
882
 
>O próximo passo é a criação de um ficheiro <filename
883
 
>.desktop</filename
884
 
> que, ao ser instalado, irá indicar ao &ksplash; que o nosso 'plugin' está disponível. Estando consistente com as convenções de nomes indicadas na <link linkend="basic-requirements"
885
 
>secção anterior</link
886
 
>, crie um ficheiro chamado <filename
887
 
>ksplash2k.desktop</filename
888
 
> nessa pasta. Deverá conter as seguintes linhas: </para>
889
 
<programlisting
890
 
><literal>
891
 
[Desktop Entry]
892
 
Encoding=UTF-8
893
 
Type=Service
894
 
Comment=Plugin do KSplash
895
 
Name=KSplash2k
896
 
ServiceTypes=KSplash/Plugin
897
 
X-KDE-Library=libksplash2k
898
 
X-KSplash-Default=true
899
 
X-KSplash-PluginName=2k
900
 
X-KSplash-ObjectName=Tema2k
901
 
</literal
902
 
>
903
 
</programlisting>
904
 
<para
905
 
>Os campos <literal
906
 
>Encoding</literal
907
 
>, <literal
908
 
>Type</literal
909
 
>, <literal
910
 
>Comment</literal
911
 
> e <literal
912
 
>ServiceTypes</literal
913
 
> são os mesmos para todos os 'plugins'. O nome do 'plugin' e da biblioteca seguem as convenções indicadas acima. O campo <literal
914
 
>X-KSplash-Default</literal
915
 
> usa um valor booleano que indica se deverá ser mostrado no módulo de configuração do painel de controlo por omissão. Excepto em casos muitos raros, deverá ser igual a <constant
916
 
>true</constant
917
 
>. </para>
918
 
</sect1>
919
 
<sect1 id="headerfile">
920
 
<title
921
 
>Declaração da classe do 'plugin'</title>
922
 
<para
923
 
>Agora que terminámos o trabalho preliminar, vamos para a parte divertida - criar uma classe que irá fornecer o comportamento que pretendemos. Embora tenhamos a liberdade de fazer com que esta classe faça praticamente tudo o que quisermos, existem algumas restrições.</para>
924
 
<orderedlist>
925
 
<listitem
926
 
><para
927
 
>As classes do 'plugin' deverão herdar da classe <constant
928
 
>ThemeEngine</constant
929
 
>.</para
930
 
></listitem>
931
 
<listitem
932
 
><para
933
 
>As classes do 'plugin' deverão ter um nome de acordo com a regra: <classname
934
 
>Theme+NomePlugin</classname
935
 
>.</para
936
 
></listitem>
937
 
<listitem
938
 
><para
939
 
>As classes do 'plugin' deverão oferecer uma função <literal
940
 
>static</literal
941
 
> chamada <function
942
 
>names</function
943
 
> que devolve uma lista com os nomes pela qual poderá ser invocada.</para
944
 
></listitem>
945
 
<listitem
946
 
><para
947
 
>Se o 'plugin' puder ser configurado no módulo do centro de controlo, deverá oferecer uma classe baseada na <literal
948
 
>ThemeEngineConfig</literal
949
 
> para a configuração.</para
950
 
></listitem>
951
 
<listitem
952
 
><para
953
 
>As classes do 'plugin' deverão reimplementar pelo menos uma das funções virtuais <function
954
 
>slotSetText</function
955
 
>, <function
956
 
>slotSetPixmap</function
957
 
>, <function
958
 
>slotUpdateProgress</function
959
 
> e <function
960
 
>slotUpdateSteps</function
961
 
> para serem úteis.</para
962
 
></listitem>
963
 
<listitem
964
 
><para
965
 
>O construtor deverá ter a forma <literal
966
 
>ThemeEngine( QWidget *mae, const char *nome, const QStringList &amp;argumentos )</literal
967
 
> para que possa ser usada com a <classname
968
 
>KGenericFactory</classname
969
 
>.</para
970
 
></listitem>
971
 
</orderedlist>
972
 
<para
973
 
>O último requisito poderá parecer complicado mas, como veremos mais tarde, ao adicionar uma única linha aos seus ficheiros de código, você poderá normalmente ignorá-lo.</para>
974
 
</sect1>
975
 
<sect1 id="headercode">
976
 
<title
977
 
>Código do ficheiro de inclusão</title>
978
 
<para
979
 
>Dadas as restrições, nós veremos agora que o ficheiro de inclusão <filename
980
 
>theme2k.h</filename
981
 
> ficará como o seguinte:</para>
982
 
<example>
983
 
<title
984
 
>Listagem do <filename
985
 
>theme2k.h</filename
986
 
></title>
987
 
<programlisting
988
 
>#ifndef __THEME2K_H__
989
 
#define __THEME2K_H__
990
 
 
991
 
#include &lt;qlabel.h&gt;
992
 
#include &lt;qwidget.h&gt;
993
 
 
994
 
#include &lt;kdialogbase.h&gt;
995
 
#include &lt;kpixmap.h&gt;
996
 
#include &lt;ksplash/themeengine.h&gt;
997
 
 
998
 
class RotWidget;
999
 
 
1000
 
class Cfg2k: public ThemeEngineConfig
1001
 
{
1002
 
  Q_OBJECT
1003
 
public:
1004
 
  Cfg2k( KConfig * );
1005
 
};
1006
 
 
1007
 
class ObjKsTheme;
1008
 
class Theme2k: public ThemeEngine
1009
 
{
1010
 
  Q_OBJECT
1011
 
public:
1012
 
  Theme2k( QWidget *, const char *, const QStringList&amp; );
1013
 
 
1014
 
  inline const QString name()
1015
 
  {
1016
 
    return( QString("KSplash2k") );
1017
 
  }
1018
 
  inline const KDialogBase *config( KConfig *kc )
1019
 
  {
1020
 
    return new Cfg2k( kc );
1021
 
  }
1022
 
  static QStringList names()
1023
 
  {
1024
 
    QStringList Nomes;
1025
 
    Nomes &lt;&lt; "KSplash2k";
1026
 
    Nomes &lt;&lt; "ks2k";
1027
 
    Nomes &lt;&lt; "2k";
1028
 
    Nomes &lt;&lt; "2000";
1029
 
    return( Nomes );
1030
 
  };
1031
 
 
1032
 
public slots:
1033
 
  inline void slotSetText( const QString&amp; s )
1034
 
  {
1035
 
    if( mTexto &amp;&amp; mTexto-&gt;text() != s ) mTexto-&gt;setText( s );
1036
 
  };
1037
 
 
1038
 
private:
1039
 
  void initUi();
1040
 
  void readSettings();
1041
 
 
1042
 
  QLabel *mTexto;
1043
 
  RotWidget *mRotacao;
1044
 
  QColor mTCorFundo, mTCorTexto, mRotCor1, mRot2, mCorEstado;
1045
 
  int mRotVelocidade;
1046
 
  QString mTitulo, mLogotipo;
1047
 
};
1048
 
 
1049
 
#endif
1050
 
</programlisting>
1051
 
</example>
1052
 
<para
1053
 
>Vamos então analisar a listagem em cima. A classe <classname
1054
 
>Theme2k</classname
1055
 
> satisfaz as convenções de nomes e herda da classe <classname
1056
 
>ThemeEngine</classname
1057
 
>. Ela contém um método <methodname
1058
 
>Theme2k::names()</methodname
1059
 
>, e tem um construtor que recebe os parâmetros obrigatórios: <function
1060
 
>Theme2k( QWidget *, const char *, const QStringList&amp; );</function
1061
 
> e também contém um método simples <methodname
1062
 
>Theme2k::slotSetText()</methodname
1063
 
>. De momento, não se preocupe com a classe <classname
1064
 
>RotWidget</classname
1065
 
>. É um pequeno item que oferece alguma beleza visual para o utilizador. O nosso 'plugin' é muito simples e não mostra nenhuns ícones nem nenhuma barra de progresso. Se você quiser mostrar os ícones, implemente de novo a função <function
1066
 
>slotSetPixmap</function
1067
 
>. Existem funções semelhantes para definir o intervalo da barra de progresso (<function
1068
 
>slotUpdateSteps</function
1069
 
>) e para incrementar (<function
1070
 
>slotUpdateProgress</function
1071
 
>) o passo actual. </para>
1072
 
</sect1>
1073
 
<sect1 id="Implementation">
1074
 
<title
1075
 
>Implementação do 'plugin'</title>
1076
 
<para
1077
 
>Nós iremos examinar só as partes relevantes da implementação. Para uma listagem da implementação completa (e não traduzida), veja por favor o apêndice. A primeira coisa que será feita é descartar o requisito da biblioteca:</para>
1078
 
<example>
1079
 
<title
1080
 
>Requisito da biblioteca</title>
1081
 
<programlisting
1082
 
>K_EXPORT_COMPONENT_FACTORY( ksplash2k, KGenericFactory&lt;Theme2k&gt; );
1083
 
</programlisting>
1084
 
</example>
1085
 
<para
1086
 
>A macro <constant
1087
 
>K_EXPORT_COMPONENT_FACTORY</constant
1088
 
> é declarada no ficheiro <filename
1089
 
>kgenericfactory.h</filename
1090
 
>. Sigamos para o construtor! Dado que este é um 'plugin' muito simples, assim o é também o construtor.</para>
1091
 
<example>
1092
 
<title
1093
 
>Construtor do 'plugin'</title>
1094
 
<programlisting
1095
 
>Theme2k::Theme2k( QWidget *mae, const char *nome, const QStringList &amp;argumentos  )
1096
 
    :ThemeEngine( mae, nome, argumentos )
1097
 
{
1098
 
  readSettings();
1099
 
  initUi();
1100
 
}
1101
 
</programlisting>
1102
 
</example>
1103
 
<para
1104
 
>O método <function
1105
 
>readSettings()</function
1106
 
> ilustra a forma correcta de obter a configuração do seu tema. (Você deseja que as pessoas usem os seus 'plugins' nos temas delas, não deseja?)</para>
1107
 
<example>
1108
 
<title
1109
 
>Obter a configuração do tema</title>
1110
 
<programlisting
1111
 
>void Theme2k::readSettings()
1112
 
{
1113
 
  if( !mTheme )
1114
 
    return;
1115
 
  KConfig *cfg = mTheme-&gt;themeConfig();
1116
 
  if( !cfg )
1117
 
    return;
1118
 
  cfg-&gt;setGroup( QString("KSplash Theme: %1").arg(mTheme-&gt;theme()) );
1119
 
  QColor TCorFundoOmissao( Qt::darkBlue );
1120
 
  QColor TCorTextoOmissao( Qt::white );
1121
 
  mTCorFundo = cfg-&gt;readColorEntry( "Cor de Fundo do Título", &amp;TCorFundoOmissao );
1122
 
  mTCorTexto = cfg-&gt;readColorEntry( "Cor do Texto do Título", &amp;TCorTextoOmissao );
1123
 
  mCorEstado = cfg-&gt;readColorEntry("Cor do Texto do Estado", &amp;mTCorFundo );
1124
 
  QColor Rot1Omissao( Qt::darkBlue );
1125
 
  QColor Rot2Omissao( Qt::cyan );
1126
 
  mRotCor1 = cfg-&gt;readColorEntry( "Cor 1 da Rotação", &amp;Rot1Omissao );
1127
 
  mRotCor2 = cfg-&gt;readColorEntry( "Cor 2 da Rotação", &amp;Rot2Omissao );
1128
 
  mRotVelocidade = cfg-&gt;readNumEntry( "Velocidade da Rotação", 30 );
1129
 
  mTitulo = cfg-&gt;readEntry( "Título da Janela", i18n("Espere por favor") );
1130
 
  mLogotipo = cfg-&gt;readEntry( "Ficheiro do Logótipo", QString::null );
1131
 
}
1132
 
</programlisting>
1133
 
</example>
1134
 
<para
1135
 
>Dado que gostamos dos nossos utilizadores, nós oferecemos valores razoáveis para os parâmetros que não estejam presentes no ficheiro do tema. Repare que devemos ser definir o nosso grupo para "KSplash Theme: nomedotema" para continuarmos compatíveis com as especificações dos temas futuras. O método <function
1136
 
>initUI()</function
1137
 
> não é muito interessante, dado que apenas cria a interface gráfica. Veja por favor o apêndice para mais detalhes. </para>
1138
 
</sect1>
1139
 
<sect1 id="compilingfile">
1140
 
<title
1141
 
>Compilar o 'plugin'</title>
1142
 
<para
1143
 
>Dado que decidimos usar a plataforma do &kde; para compilar o 'plugin', nós iremos precisar de criar um <filename
1144
 
>Makefile.am</filename
1145
 
>. Deverá ficar algo do género:</para>
1146
 
<example>
1147
 
<title
1148
 
>Listagem do <filename
1149
 
>Makefile.am</filename
1150
 
></title>
1151
 
<programlisting
1152
 
>INCLUDES = $(all_includes)
1153
 
 
1154
 
kde_module_LTLIBRARIES = ksplash2k.la
1155
 
 
1156
 
ksplash2k_la_SOURCES = theme2k.cpp rotwidget.cpp
1157
 
ksplash2k_la_LDFLAGS = $(all_libraries) $(KDE_RPATH)
1158
 
ksplash2k_la_LIBADD = $(LIB_KDEUI) -lksplashthemes
1159
 
 
1160
 
METASOURCES = AUTO
1161
 
 
1162
 
noinst_HEADERS        = theme2k.h rotwidget.h
1163
 
 
1164
 
servicesdir = $(kde_servicesdir)
1165
 
services_DATA = ksplash2k.desktop
1166
 
 
1167
 
themedir = $(kde_datadir)/ksplash/Themes/2k
1168
 
theme_DATA = Theme.rc Preview.png
1169
 
</programlisting>
1170
 
</example>
1171
 
<para
1172
 
>Para mais informações sobre como criar os ficheiros <filename
1173
 
>Makefile.am</filename
1174
 
> para o &kde;, por favor veja o <ulink url="http://developer.kde.org/documentation/other/makefile_am_howto.html"
1175
 
>'site' Web</ulink
1176
 
> dos programadores do &kde;. A única coisa a notar é que nós oferecemos um tema por omissão baseado neste 'plugin' e oferecemos uma imagem de antevisão para o mesmo. Por razões de cortesia para os seus utilizadores, você deverá oferecer um <filename
1177
 
>Theme.rc</filename
1178
 
> de exemplo e que ilustre a utilização das várias opções.</para>
1179
 
</sect1>
1180
 
</chapter>
1181
 
 
1182
 
<chapter id="faq">
1183
 
<title
1184
 
>Perguntas e Respostas</title>
1185
 
&reporting.bugs; &updating.documentation; <qandaset id="faqlist">
1186
 
<qandaentry>
1187
 
<question>
1188
 
<para
1189
 
>Não consigo encontrar nenhuns temas que funcionem no &ksplash;. Porquê?</para>
1190
 
</question>
1191
 
<answer>
1192
 
<para
1193
 
>Você provavelmente não tem os 'plugins' correctos para o tema. Os 'plugins' estão no pacote <literal
1194
 
>kde-artwork</literal
1195
 
>. Obtenha-os e instale-os, e tente de novo mais tarde.</para>
1196
 
</answer>
1197
 
</qandaentry>
1198
 
<qandaentry>
1199
 
<question>
1200
 
<para
1201
 
>O que é o ficheiro <filename
1202
 
>Theme.rc</filename
1203
 
> e como é que crio um?</para>
1204
 
</question>
1205
 
<answer>
1206
 
<para
1207
 
>O <filename
1208
 
>Theme.rc</filename
1209
 
> é o ficheiro onde você poderá indicar a configuração de um tema. Para mais informações, dê uma vista de olhos em <link linkend="themes"
1210
 
>Como criar temas para o &ksplash;</link
1211
 
>. </para>
1212
 
</answer>
1213
 
</qandaentry>
1214
 
</qandaset>
1215
 
</chapter>
1216
 
 
1217
 
<chapter id="credits">
1218
 
<title
1219
 
>Créditos e Licença</title>
1220
 
 
1221
 
<para
1222
 
>&ksplash;</para>
1223
 
 
1224
 
<para
1225
 
>Programa Copyright &copy; 2003 &Ravikiran.Rajagopal; &Ravikiran.Rajagopal.mail;</para>
1226
 
 
1227
 
<itemizedlist>
1228
 
<title
1229
 
>Contribuições</title>
1230
 
<listitem
1231
 
><para
1232
 
>&Brian.C.Ledbetter; &Brian.C.Ledbetter.mail;</para>
1233
 
</listitem>
1234
 
</itemizedlist>
1235
 
 
1236
 
<para
1237
 
>Documentação Copyright &copy; 2003 &Teemu.Rytilahti; &Teemu.Rytilahti.mail;</para>
1238
 
&underFDL; &underGPL; </chapter>
1239
 
 
1240
 
<appendix id="installation">
1241
 
<title
1242
 
>Instalação</title>
1243
 
 
1244
 
<sect1 id="requirements">
1245
 
<title
1246
 
>Requisitos</title>
1247
 
 
1248
 
<para
1249
 
>Para conseguir usar com sucesso o &ksplash;, você necessita do &kde; versão 3.2 ou superior. Alguns temas poderão necessitar de 'plugins' específicos. Se um tema não funcionar, por favor contacte o autor do tema para descobrir onde obter o 'plugin' apropriado.</para>
1250
 
 
1251
 
</sect1>
1252
 
 
1253
 
<sect1 id="compilation">
1254
 
<title
1255
 
>Compilação e Instalação</title>
1256
 
&install.compile.documentation; </sect1>
1257
 
</appendix>
1258
 
<appendix id="srccode">
1259
 
<title
1260
 
>Código-fonte</title>
1261
 
<sect1 id="theme2kcpp">
1262
 
<title
1263
 
>Listagem não traduzida do <filename
1264
 
>theme2k.cpp</filename
1265
 
></title>
1266
 
<programlisting
1267
 
>#include &lt;qlabel.h&gt;
1268
 
#include &lt;qwidget.h&gt;
1269
 
 
1270
 
#include &lt;kapplication.h&gt;
1271
 
#include &lt;kconfig.h&gt;
1272
 
#include &lt;kdebug.h&gt;
1273
 
#include &lt;kdialogbase.h&gt;
1274
 
#include &lt;kgenericfactory.h&gt;
1275
 
#include &lt;kglobalsettings.h&gt;
1276
 
#include &lt;klocale.h&gt;
1277
 
#include &lt;ksplash/objkstheme.h&gt;
1278
 
#include &lt;kstandarddirs.h&gt;
1279
 
 
1280
 
#include "rotwidget.h"
1281
 
#include "theme2k.h"
1282
 
#include "theme2k.moc"
1283
 
 
1284
 
K_EXPORT_COMPONENT_FACTORY( ksplash2k, KGenericFactory&lt;Theme2k&gt; );
1285
 
 
1286
 
Cfg2k::Cfg2k( KConfig * )
1287
 
{}
1288
 
 
1289
 
Theme2k::Theme2k( QWidget *parent, const char *name, const QStringList &amp;args
1290
 
 )
1291
 
    :ThemeEngine( parent, name, args )
1292
 
{
1293
 
  readSettings();
1294
 
  initUi();
1295
 
}
1296
 
 
1297
 
void Theme2k::initUi()
1298
 
{
1299
 
  QVBox *vbox = new QVBox( this );
1300
 
  vbox-&gt;setFrameShape( QFrame::WinPanel );
1301
 
  vbox-&gt;setFrameShadow( QFrame::Raised );
1302
 
 
1303
 
  QHBox *labelBox = new QHBox( vbox );
1304
 
  labelBox-&gt;setPalette( mTBgColor );
1305
 
  labelBox-&gt;setMargin( 1 );
1306
 
  QLabel *lbl = new QLabel( mWndTitle, labelBox );
1307
 
  lbl-&gt;setFont( QFont( "Arial", 12, QFont::Bold ) );
1308
 
  lbl-&gt;setPaletteForegroundColor( mTFgColor );
1309
 
 
1310
 
  QLabel *logo = new QLabel( vbox );
1311
 
  logo-&gt;setPalette( Qt::white );
1312
 
 
1313
 
  QString px( locate( "appdata", mTheme-&gt;themeDir() +
1314
 
(mLogoFile.isNull()?QString("/Logo.png"):mLogoFile) ) );
1315
 
  if (px.isNull())
1316
 
    px = locate("appdata","Themes/Default/splash_top.png");
1317
 
  if( !px.isNull() )
1318
 
  {
1319
 
    QPixmap pix( px );
1320
 
    logo-&gt;setPixmap( pix );
1321
 
  }
1322
 
  else
1323
 
  {
1324
 
    logo-&gt;setText( "&lt;B&gt;KDE&lt;/B&gt;2000" );
1325
 
    logo-&gt;setAlignment( AlignCenter|AlignVCenter );
1326
 
  }
1327
 
 
1328
 
  mRotator = new RotWidget( vbox, mRotColor1, mRotColor2, mRotSpeed );
1329
 
 
1330
 
  QHBox *hbox = new QHBox( vbox );
1331
 
  labelBox-&gt;setSpacing( 4 );
1332
 
  labelBox-&gt;setMargin( 4 );
1333
 
 
1334
 
  mText = new QLabel( hbox );
1335
 
  mText-&gt;setPaletteForegroundColor( mStatusColor );
1336
 
  mText-&gt;setPaletteBackgroundColor( mTFgColor );
1337
 
  mText-&gt;setText( mWndTitle );
1338
 
  mText-&gt;setFixedHeight( 48 );
1339
 
 
1340
 
  setFixedSize( vbox-&gt;sizeHint() );
1341
 
  QRect rect(KGlobalSettings::splashScreenDesktopGeometry());
1342
 
  move( rect.x() + (rect.width() - size().width())/2,
1343
 
        rect.y() + (rect.height() - size().height())/2 );
1344
 
}
1345
 
 
1346
 
void Theme2k::readSettings()
1347
 
{
1348
 
  if( !mTheme )
1349
 
    return;
1350
 
 
1351
 
  KConfig *cfg = mTheme-&gt;themeConfig();
1352
 
  if( !cfg )
1353
 
    return;
1354
 
 
1355
 
  cfg-&gt;setGroup( QString("KSplash Theme: %1").arg(mTheme-&gt;theme()) );
1356
 
 
1357
 
  QColor DefaultTBgColor( Qt::darkBlue );
1358
 
  QColor DefaultTFgColor( Qt::white );
1359
 
 
1360
 
  mTBgColor = cfg-&gt;readColorEntry( "Title Background Color",
1361
 
&amp;DefaultTBgColor );
1362
 
  mTFgColor = cfg-&gt;readColorEntry( "Title Foreground Color",
1363
 
&amp;DefaultTFgColor );
1364
 
  mStatusColor = cfg-&gt;readColorEntry("Status Text Color", &amp;mTBgColor );
1365
 
 
1366
 
  QColor DefaultRot1( Qt::darkBlue );
1367
 
  QColor DefaultRot2( Qt::cyan );
1368
 
  mRotColor1 = cfg-&gt;readColorEntry( "Rotator Color 1", &amp;DefaultRot1 );
1369
 
  mRotColor2 = cfg-&gt;readColorEntry( "Rotator Color 2", &amp;DefaultRot2 );
1370
 
 
1371
 
  mRotSpeed = cfg-&gt;readNumEntry( "Rotator Speed", 30 );
1372
 
  mWndTitle = cfg-&gt;readEntry( "Window Title", i18n("Please wait...") );
1373
 
  mLogoFile = cfg-&gt;readEntry( "Logo File", QString::null );
1374
 
}
1375
 
</programlisting>
1376
 
</sect1>
1377
 
<sect1 id="rotwidgeth">
1378
 
<title
1379
 
>Listagem não traduzida do <filename
1380
 
>rotwidget.h</filename
1381
 
></title>
1382
 
<programlisting
1383
 
>#ifndef         __ROTWIDGET_H__
1384
 
#define         __ROTWIDGET_H__
1385
 
 
1386
 
#include &lt;qlabel.h&gt;
1387
 
#include &lt;qtimer.h&gt;
1388
 
#include &lt;qwidget.h&gt;
1389
 
 
1390
 
#include &lt;kdialogbase.h&gt;
1391
 
#include &lt;kpixmap.h&gt;
1392
 
 
1393
 
/**
1394
 
 * @short Mostrar um item de gradiente em rotação.
1395
 
 */
1396
 
class         RotWidget: public QWidget
1397
 
{
1398
 
  Q_OBJECT
1399
 
public:
1400
 
  RotWidget( QWidget *, const QColor&amp;, const QColor&amp;, int );
1401
 
  ~RotWidget();
1402
 
 
1403
 
private slots:
1404
 
  void stepEvent();
1405
 
 
1406
 
protected:
1407
 
  void        preparePixmap( int );
1408
 
  void        paintEvent( QPaintEvent * );
1409
 
  void        resizeEvent( QResizeEvent * );
1410
 
 
1411
 
  QColor m_cor1, m_cor2;
1412
 
  int m_passo, m_velocidade;
1413
 
  QTimer *m_relogioPasso;
1414
 
 
1415
 
  QList&lt;QPixmap&gt; m_imagemPasso;
1416
 
};
1417
 
 
1418
 
#endif
1419
 
</programlisting>
1420
 
</sect1>
1421
 
<sect1 id="rotwidgetcpp">
1422
 
<title
1423
 
>Listagem não traduzida <filename
1424
 
>rotwidget.cpp</filename
1425
 
></title>
1426
 
<programlisting
1427
 
>#include &lt;kdebug.h&gt;
1428
 
#include &lt;kdialogbase.h&gt;
1429
 
#include &lt;kpixmapeffect.h&gt;
1430
 
 
1431
 
#include &lt;qlabel.h&gt;
1432
 
#include &lt;qpainter.h&gt;
1433
 
#include &lt;qwidget.h&gt;
1434
 
 
1435
 
#include "rotwidget.h"
1436
 
#include "rotwidget.moc"
1437
 
 
1438
 
RotWidget::RotWidget( QWidget *mae, const QColor&amp; c1, const QColor&amp; c2, int vel )
1439
 
    :QWidget(mae), m_cor1(c1), m_cor2(c2), m_passo(0), m_velocidade(vel)
1440
 
{
1441
 
  if( (m_velocidade &lt;= 0) || (m_velocidade &gt; 20) )
1442
 
    m_velocidade = 1;
1443
 
  setFixedHeight( 6 );
1444
 
 
1445
 
  for( int i = 0; i &lt;= width(); i++ )
1446
 
    preparePixmap( i );
1447
 
 
1448
 
  m_passoRelogio = new QTimer( this );
1449
 
  connect(m_passoRelogior, SIGNAL(timeout()), this, SLOT(stepEvent()));
1450
 
  m_passoRelogio-&gt;start( 50 );
1451
 
}
1452
 
 
1453
 
RotWidget::~RotWidget()
1454
 
{
1455
 
}
1456
 
 
1457
 
void RotWidget::stepEvent()
1458
 
{
1459
 
  // This is inefficient as we create too many pixmaps, optimize later.
1460
 
  m_passo += m_velocidade;
1461
 
  if( m_passo &gt; width() )
1462
 
    m_passo = 0;
1463
 
  repaint( true );
1464
 
}
1465
 
 
1466
 
// Todo: Optimize drawing.
1467
 
void RotWidget::paintEvent( QPaintEvent *pe )
1468
 
{
1469
 
  QPainter p;
1470
 
  p.begin( this );
1471
 
 
1472
 
  QRect r = pe-&gt;rect();
1473
 
 
1474
 
  if( m_imagemPasso.at( m_passo ) )
1475
 
    bitBlt( this, r.x(), r.y(), m_imagemPasso.at( m_passo ), r.x(), r.y(), r.width(), r.height() );
1476
 
  else
1477
 
    p.fillRect( rect(), Qt::black );
1478
 
  p.end();
1479
 
}
1480
 
 
1481
 
void RotWidget::resizeEvent( QResizeEvent *re )
1482
 
{
1483
 
  m_imagemPasso.clear();
1484
 
  for( int i = 0; i &lt;= re-&gt;size().width(); i++ )
1485
 
    preparePixmap( i );
1486
 
}
1487
 
 
1488
 
void RotWidget::preparePixmap( int step )
1489
 
{
1490
 
  if( step &lt; 0 )
1491
 
    return;
1492
 
 
1493
 
  // Explicitly draw our first pixmap. The rest we will bitBlt() from here.
1494
 
  if( step == 0 )
1495
 
  {
1496
 
    QPixmap tmp; tmp.resize( size().width() / 2, size().height() );
1497
 
    QPixmap tmp2(tmp);
1498
 
    KPixmapEffect::gradient( tmp, m_color1, m_color2, KPixmapEffect::HorizontalGradient );
1499
 
    KPixmapEffect::gradient( tmp2, m_color2, m_color1, KPixmapEffect::HorizontalGradient );
1500
 
    QPixmap *px = new QPixmap( size() );
1501
 
    QPainter p;
1502
 
    p.begin( px );
1503
 
    p.drawPixmap( 0, 0, tmp );
1504
 
    p.drawPixmap( size().width()/2, 0, tmp2 );
1505
 
    p.end();
1506
 
    m_imagemPasso.append( px );
1507
 
  }
1508
 
  else if( m_imagemPasso.at( step-1 ) )
1509
 
  {
1510
 
    QPixmap *anterior = m_imagemPasso.at( step-1 );
1511
 
    QPixmap prox; prox.resize( size() );
1512
 
    // convert
1513
 
    // anterior = "[------------]"
1514
 
    // to
1515
 
    // prox = "------------]["
1516
 
    bitBlt( &amp;prox, 0, 0, anterior, 1, 0, anterior-&gt;width()-1, anterior-&gt;height() );
1517
 
    bitBlt( &amp;prox, width()-1, 0, anterior, 0, 0, 1, anterior-&gt;height() );
1518
 
    QPixmap *n = new QPixmap( prox );
1519
 
    m_imagemPasso.append( n );
1520
 
  }
1521
 
}
1522
 
</programlisting>
1523
 
</sect1>
1524
 
</appendix>
1525
 
 
1526
 
&documentation.index;
1527
 
</book>
1528
 
 
1529
 
<!--
1530
 
Local Variables:
1531
 
mode: xml
1532
 
sgml-minimize-attributes:nil
1533
 
sgml-general-insert-case:lower
1534
 
sgml-indent-step:0
1535
 
sgml-indent-data:nil
1536
 
End:
1537
 
 
1538
 
vim:tabstop=2:shiftwidth=2:expandtab
1539
 
-->