>O &amarok; usa os atalhos do teclado, como a maioria das outras aplicações; em baixo, encontra-se uma listagem desses atalhos e das suas acções respectivas. Os atalhos globais podem ser configurados se carregar com o &RMB; na janela do Leitor e se seleccionar a opção <guimenuitem
>Configurar os Atalhos Globais...</guimenuitem
>. Os atalhos do &amarok; podem ser configurados se carregar com o &RMB; na janela do Leitor e seleccionar a opção <guimenuitem
>Configurar os Atalhos...</guimenuitem
></para>
<tip
><para
>Você poderá atribuir teclas multimédia para funcionarem como atalhos do &amarok;, tornando o seu teclado um centro de controlo do &amarok;.</para
></tip>
<para
>Os atalhos globais são:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Combinação de Teclas</entry>
<entry
>Acção</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>X</keycap
></keycombo
></entry>
<entry
>Reproduzir</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Pausa</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>V</keycap
></keycombo
></entry>
<entry
>Parar</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>B</keycap
></keycombo
></entry>
<entry
>Próxima Faixa</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Faixa Anterior</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Aumentar o Volume</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Diminuir o Volume</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Add</keycap
></keycombo
></entry>
<entry
>Avançar</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>Shift</keycap
><keycap
>KP_Subtract</keycap
></keycombo
></entry>
<entry
>Recuar</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Adicionar Média</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>P</keycap
></keycombo
></entry>
<entry
>Comutar a Lista</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>O</keycap
></keycombo
></entry>
<entry
>Mostrar o OSD</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Win</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Volume Silenciado</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Os atalhos do &amarok; são:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Combinação de Teclas</entry>
<entry
>Acção</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>C</keycap
></keycombo
></entry>
<entry
>Copiar</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>KP_Enter</keycap
></keycombo
></entry>
<entry
>Ir para a Actual</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>D</keycap
></keycombo
></entry>
<entry
>Colocar na Fila as Faixas Seleccionadas</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Q</keycap
></keycombo
></entry>
<entry
>Sair</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Shift</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Refazer</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>S</keycap
></keycombo
></entry>
<entry
>Gravar a Lista de Reprodução</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
></entry>
<entry
>Seleccionar Tudo</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>M</keycap
></keycombo
></entry>
<entry
>Mostrar o Menu</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>H</keycap
></keycombo
></entry>
<entry
>Baralhar</entry>
</row>
<row>
<entry
><keycombo
><keycap
>Ctrl</keycap
><keycap
>Z</keycap
></keycombo
></entry>
<entry
>Desfazer</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>Os atalhos do Navegador na Lista de Reprodução são:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Combinação de Teclas</entry>
<entry
>Acção</entry>
</row>
</thead>
<tbody>
<row>
<entry
><keycap
>Espaço</keycap
></entry>
<entry
>Carregar Listas</entry>
</row>
<row>
<entry
><keycap
>F2</keycap
></entry>
<entry
>Mudar o Nome da Lista</entry>
</row>
<row>
<entry
><keycap
>Backspace</keycap
></entry>
<entry
>Remover a Lista</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="the-dcop-interface">
<title
>A Interface DCOP</title>
<para
>A interface de DCOP do Amarok oferece-lhe uma forma simples de controlar o Amarok com os seus próprios programas personalizados.</para>
<para
>A interface de DCOP do Amarok tem várias funções genéricas que poderão ser encontradas noutras aplicações do KDE. Esta secção está dividida em seis tabelas e pretende descrever as funções do DCOP para a colecção, o navegador de contexto, o leitor, a lista, o navegador da lista para os programas. Um exemplo da função de DCOP <quote
>pause</quote
> seria semelhante ao seguinte:</para>
<para
><prompt
>%</prompt
>dcop amarok player pause</para>
<sect2 id="dcop-collection">
<title
>dcop amarok collection</title>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Chamada DCOP</entry>
<entry
>Acção</entry>
</row>
</thead>
<tbody>
<row>
<entry
>int totalAlbums()</entry>
<entry
>Devolve o número total de álbuns na sua colecção.</entry>
</row>
<row>
<entry
>int totalArtists()</entry>
<entry
>Devolve o número total de artistas na sua colecção.</entry>
</row>
<row>
<entry
>int totalCompilations()</entry>
<entry
>Devolve o número total de compilações na sua colecção.</entry>
</row>
<row>
<entry
>int totalGenres()</entry>
<entry
>Devolve o número total de géneros musicais na sua colecção.</entry>
</row>
<row>
<entry
>int totalTracks()</entry>
<entry
>Devolve o número total de faixas na sua colecção.</entry>
</row>
<row>
<entry
>QString query( QString sql)</entry>
<entry
>Executa uma pesquisa de SQL na base de dados.</entry>
</row>
<row>
<entry
>QStringList similarArtists( int artistas )</entry>
<entry
>Devolve os artistas semelhantes às faixas actuais, limitando a quantidade a 'artistas'.</entry>
>Devolve um valor de item do AmarokConfig com base na chave indicada.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="cmd-line-options">
<title
>Opções da Linha de Comandos</title>
<para
>O Amarok suporta a utilização das opções normais da linha de comandos para o Qt e o &kde;. O Amarok tem também as suas opções específicas da aplicação.</para>
<para
>As opções do Qt e do kde:</para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Opção</entry>
<entry
>Acção</entry>
</row>
</thead>
<tbody>
<row>
<entry
>--help</entry>
<entry
>Mostra a ajuda acerca das opções.</entry>
</row>
<row>
<entry
>--help-qt</entry>
<entry
>Mostra as opções específicas do Qt.</entry>
</row>
<row>
<entry
>--help-kde</entry>
<entry
>Mostra opções específicas do KDE.</entry>
</row>
<row>
<entry
>--help-all</entry>
<entry
>Mostra todas as opções.</entry>
</row>
<row>
<entry
>--author</entry>
<entry
>Mostra informações sobre o autor.</entry>
</row>
<row>
<entry
>-v, --version</entry>
<entry
>Mostra a versão.</entry>
</row>
<row>
<entry
>--license</entry>
<entry
>Mostra informações acerca da licença.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para
>As opções do Amarok:</para>
<note
><para
>As opções do &amarok; foram concebidas para ser utilizadas enquanto o &amarok; está a correr.</para
></note>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Opção</entry>
<entry
>Acção</entry>
</row>
</thead>
<tbody>
<row>
<entry
>-r, --previous</entry>
<entry
>Passa à faixa anterior na lista de reprodução.</entry>
</row>
<row>
<entry
>-p, --play</entry>
<entry
>Para de tocar a lista de músicas actual.</entry>
</row>
<row>
<entry
>-s, --stop</entry>
<entry
>Para a reprodução.</entry>
</row>
<row>
<entry
>--pause</entry>
<entry
>Pausa a reprodução.</entry>
</row>
<row>
<entry
>-f, --next</entry>
<entry
>Passa para a próxima faixa na lista de reprodução.</entry>
</row>
<row>
<entry
>-a, --append</entry>
<entry
>Adicionar ficheiros/URLs à lista de reprodução.</entry>
</row>
<row>
<entry
>-e, --enqueue</entry>
<entry
>Veja 'append', disponível por razões de compatibilidade.</entry>
</row>
<row>
<entry
>--queue</entry>
<entry
>Coloca ficheiros/URLs na lista a seguir à faixa actual.</entry>
</row>
<row>
<entry
>-m, --toggle-playlist-window</entry>
<entry
>Activa ou desactiva a janela da lista de músicas.</entry>
</row>
<row>
<entry
>--wizard</entry>
<entry
>Lança o assistente da Primeira Execução.</entry>
</row>
<row>
<entry
>--engine "nome"</entry>
<entry
>Inicia o &amarok; como o motor "name".</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="script-writing">
<title
>Criação de 'Scripts'</title>
<para
>A programação permite-lhe extender o &amarok; facilmente sem ter de alterar o código principal. Os programas ou 'scripts' são semelhantes a 'plugins', mas em vez de terem uma API de 'plugins' dedicada, eles usam apenas a interface de DCOP do &amarok; para a comunicação. Isto torna possível criar 'scripts' em qualquer linguagem de programa, como o Ruby, o Python ou o PHP. Não só poderá criar programas nas linguagens de 'scripting' clássicas, como também em linguagens compiladas, como em C++ ou em C simples. Para além disso, o &amarok; poderá notificar os 'scripts' para certos eventos e fazer com que estes reajam de acordo com essa situação. Este sistema de notificação será explicado mais tarde nesta secção.</para>
<sect2 id="script-bindings">
<title
>Interfaces</title>
<para
>É possível criar programas simples que não necessitem de interacção com o utilizador, assim como também possível criar programas com GUIs confortáveis que se comportem como pequenas aplicações independentes. Para a programação da GUI, poderá ser usada uma das várias interfaces que o KDE oferece, como por exemplo o RubyQt, uma interface para a biblioteca do Qt em ruby. Contudo, deve ser claro que nem todos os utilizadores têm as interfaces disponíveis instaladas. Se optar por usar uma interface, tente usar uma das que seja mais usada (p.ex., o RubyQt ou o PyQt).</para>
<para
>Para mostrar alguma reacção, quando algum programa se recusa a correr devido a uma dependência em falta, verifique por favor o seu programa para saber se o módulo que deseja incluir existe de facto. Se faltar essa dependência, deverá capturar o erro e mostrar uma janela de informação, usando a ferramenta da linha de comandos "kdialog", para que o utilizador aprenda porque é que o programa não funciona.</para>
<para
>Este exemplo mostra como capturar uma dependência em falta no Ruby:</para>
>O &amarok; oferece modelos de programas em várias linguagens na pasta <filename class="directory"
>scripts/templates/</filename
>. Poderá usar estes programas como base para os seus próprios 'scripts', assim como extendê-los com a funcionalidade que necessita. Irá reparar que a programação é, de facto, bastante intuitiva; por exemplo, se souber programar mais ou menos em Python, a criação do seu programa não irá levar muito tempo.</para>
</sect2>
<sect2 id="script-controlling-amarok">
<title
>Controlar o &amarok; com o DCOP</title>
<para
>Os programas poderão controlar o Amarok, invocando algumas das suas funções de DCOP. A forma mais simples de invocar uma função do DCOP é usando o utilitário da linha de comandos "dcop", que faz parte de qualquer distribuição do KDE.</para>
<para
>Aqui está um exemplo para aumentar o volume-mestre:</para>
<programlisting
>dcop amarok player volumeUp</programlisting>
<para
>A maioria as linguagens de programação permitem executar programas externos, com uma função do tipo exec(). Desta forma, o utilitário "dcop" poderá ser invocado facilmente. Aqui está um exemplo simples em Python:</para>
<programlisting
>import os
os.system("dcop amarok player volumeDown")
</programlisting>
</sect2>
<sect2 id="script-notifications">
<title
>Notificações</title>
<para
>O &amarok; envia notificações para todos os programas em execução, escrevendo mensagens para o seu canal de 'stdin'. O programa deverá, deste modo, vigiar constantemente o 'stdin', de modo a reagir de acordo com cada um dos eventos possíveis. Os programas também poderão optar por ignorar qualquer evento que não necessitem.</para>
<para
>Serão enviadas as seguintes notificações pelo &amarok;:</para>
<programlisting
><cmdsynopsis
><command
>configure</command
></cmdsynopsis>
Diz ao programa para mostrar a sua janela de configuração. O programa deverá
lidar com o carregamento e gravação das suas opções de configuração. Quando
um programa é iniciado, o Amarok muda a sua pasta de trabalho para a pasta
onde todos os dados deverão estar gravados.
</programlisting>
<programlisting
><cmdsynopsis
><command
>engineStateChange:</command
><arg
>empty|idle|paused|playing</arg
></cmdsynopsis>
Assinala uma mudança no estado do motor.
</programlisting>
<programlisting
><cmdsynopsis
><command
>trackChange</command
></cmdsynopsis>
Assinala o início de uma faixa nova. O programa poderá então usar as
funções de DCOP para obter mais informações sobre a faixa, p.ex., os
meta-dados e o tamanho.
</programlisting>
<programlisting
><cmdsynopsis
><command
>volumeChange</command
><arg
>novoVolume</arg
></cmdsynopsis>
Assinala a mudança do nível de volume-mestre. O volume é um número inteiro
de 0-100.
</programlisting>
<programlisting
><cmdsynopsis
><command
>customMenuClicked:</command
><arg
>submenu tituloItem locais</arg
></cmdsynopsis>
Devolve as localizações dos ficheiros seleccionados na lista de reprodução
quando o item do menu de contexto da lista de reprodução for carregado. O
submenu e o tituloItem são também devolvidos por razões de identificação,
no caso de um programa estar à espera de várias notificações.
Para inserir um item no menu de contexto, use a chamada de DCOP
'dcop amarok script addCustomMenuItem( submenu tituloItem )'. Para remover
um item do menu de contexto, use a chamada de DCOP
>Antes de o &amarok; sair, ou quando o utilizador parar um 'script' com o Gestor de 'Scripts', o &amarok; envia o sinal SIGTERM para o programa. Este sinal poderá ser capturado para fazer algum trabalho de limpeza, como a gravação dos dados ou das opções de configuração.</para>
</sect2>
<sect2 id="script-packaging">
<title
>Empacotamento</title>
<para
>O Gestor de 'Scripts' do &amarok; é capaz de instalar pacotes de programas que o utilizador tenha obtido de um servidor da Web. Os pacotes são ficheiros comprimidos perfeitamente normais (.tar), opcionalmente comprimidos com o bzip2 (.bz2). Recomenda-se em grande medida que use um nome de ficheiro do tipo o-meu-programa.amarokscript.tar.bz2, para que o utilizador consiga identificar facilmente o pacote como um programa do Amarok.</para>
<note
><para
>O &amarok; 1.3 só irá aceitar pacotes de 'scripts' com a extensão 'amarokscript', por isso é melhor é usá-la logo desde o início.</para
></note>
<para
>O conteúdo do pacote deverá estar organizado da seguinte forma:</para>
<programlisting
>myscript/
README
o-meu-programa.py (executável)
um-modulo.py
xpto.data
...
</programlisting>
</sect2>
<sect2 id="script-permissions">
<title
>Permissões dos ficheiros</title>
<para
>O programa principal deverá ter permissões de execução (+x) activas, enquanto os módulos adicionais que o programa carregar não deverão ser executáveis. Para preservar as permissões do ficheiro no pacote, deverá usar o 'tar' com a opção '-p':</para>